Skip to main content

TCP/IP

🌐 36. What is TCP/IP, and why is it fundamental for data transmission?​

TCP/IP āĻšāϞ⧋ āĻĻ⧁āĻŸā§‹ protocol-āĻāϰ āϏāĻŽāĻ¨ā§āĻŦāϝāĻŧ:

  • đŸ“Ļ TCP (Transmission Control Protocol) — data āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝāĻ­āĻžāĻŦ⧇ āĻĒāĻžāĻ āĻžāύ⧋āϰ āύāĻŋāϝāĻŧāĻŽ
  • đŸˇī¸ IP (Internet Protocol) — data āϕ⧋āĻĨāĻžāϝāĻŧ āĻĒāĻžāĻ āĻžāĻŦ⧇ āϏ⧇āϟāĻž āĻ āĻŋāĻ• āĻ•āϰāĻžāϰ āύāĻŋāϝāĻŧāĻŽ

āĻāχ āĻĻ⧁āĻŸā§‹ āĻŽāĻŋāϞ⧇ internet-āĻāϰ backbone āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĨ¤ āϤ⧋āĻŽāĻžāϰ browser āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ email, video call — āϏāĻŦ āĻ•āĻŋāϛ⧁āχ TCP/IP-āĻāϰ āωāĻĒāϰ āϚāϞ⧇āĨ¤

📊 TCP/IP Model — 4āϟāĻŋ Layer​

TCP/IP four-layer model diagram

āĻĒā§āϰāϤāĻŋāϟāĻž layer-āĻāϰ āφāϞāĻžāĻĻāĻž āĻ•āĻžāϜ āφāϛ⧇ — āĻāĻ•āϟāĻž āφāϰ⧇āĻ•āϟāĻžāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇āĨ¤

đŸ› ī¸ āĻĒā§āϰāϤāĻŋāϟāĻŋ Layer āϕ⧀ āĻ•āϰ⧇?​

Layer 1 — Network Access Layer (āϏāĻŦāĻžāϰ āύāĻŋāĻšā§‡)​

Physical medium āĻĻāĻŋāϝāĻŧ⧇ data āĻĒāĻžāĻ āĻžāύ⧋āϰ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤

āĻ•āĻžāϜ: bits → electrical signal / radio wave / light pulse
āωāĻĻāĻžāĻšāϰāĻŖ: Ethernet cable, Wi-Fi, fiber optic
Layer 2 — Internet Layer​

Data āϕ⧋āύ path āĻĻāĻŋāϝāĻŧ⧇ āϝāĻžāĻŦ⧇ āϏ⧇āϟāĻž āĻ āĻŋāĻ• āĻ•āϰ⧇āĨ¤

āĻ•āĻžāϜ: IP address āĻĻ⧇āϖ⧇ āϏāĻ āĻŋāĻ• destination āĻ–ā§‹āρāĻœā§‡
IP packet āϤ⧈āϰāĻŋ āĻ•āϰ⧇ — source IP + destination IP āϝ⧋āĻ— āĻ•āϰ⧇
Router āĻāχ layer-āĻ āĻ•āĻžāϜ āĻ•āϰ⧇
Layer 3 — Transport Layer​

Data āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝāĻ­āĻžāĻŦ⧇ āĻĒ⧌āρāĻ›āĻžāĻšā§āϛ⧇ āĻ•āĻŋāύāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧇āĨ¤

TCP: āύāĻŋāĻļā§āϚāĻŋāϤ delivery, error check, order maintain
UDP: āĻĻā§āϰ⧁āϤ āĻ•āĻŋāĻ¨ā§āϤ⧁ guarantee āύ⧇āχ
Port number āĻāχ layer-āĻ āĻĨāĻžāϕ⧇ (80, 443, 22...)
Layer 4 — Application Layer (āϏāĻŦāĻžāϰ āωāĻĒāϰ⧇)​

User āϝāĻž āĻĻ⧇āϖ⧇ āϏ⧇āχ data āϤ⧈āϰāĻŋ āĻšāϝāĻŧ āĻāĻ–āĻžāύ⧇āĨ¤

HTTP → webpage
SMTP → email
DNS → domain name lookup
FTP → file transfer

🔄 TCP āϕ⧀āĻ­āĻžāĻŦ⧇ Data āĻĒāĻžāĻ āĻžāϝāĻŧ?​

āϧāĻžāĻĒ ā§§ — Three-Way Handshake (Connection āĻ¸ā§āĻĨāĻžāĻĒāύ)​
Client                    Server
| |
|——— SYN ————————————————→ | "āφāĻŽāĻŋ connect āĻ•āϰāϤ⧇ āϚāĻžāχ"
| |
| ←——— SYN-ACK ————————————| "āĻ āĻŋāĻ• āφāϛ⧇, āφāĻŽāĻŋ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ"
| |
|——— ACK ————————————————→ | "āϚāĻŽā§ŽāĻ•āĻžāϰ, āĻļ⧁āϰ⧁ āĻ•āϰāĻŋ"
| |
|====== Data Transfer ======|
āϧāĻžāĻĒ ā§¨ — Data Segmentation (āĻ­āĻžāĻ— āĻ•āϰāĻž)​

āĻŦāĻĄāĻŧ data āĻāĻ•āĻŦāĻžāϰ⧇ āĻĒāĻžāĻ āĻžāύ⧋ āϝāĻžāϝāĻŧ āύāĻž — TCP āϏ⧇āϟāĻž āϛ⧋āϟ āϛ⧋āϟ segment-āĻ āĻ­āĻžāĻ— āĻ•āϰ⧇:

"Hello, how are you doing today?" (32 bytes)
↓ TCP āĻ­āĻžāĻ— āĻ•āϰ⧇
Segment 1: "Hello, how" [Seq: 1]
Segment 2: " are you do" [Seq: 2]
Segment 3: "ing today?" [Seq: 3]

āĻĒā§āϰāϤāĻŋāϟāĻž segment-āĻ āĻĨāĻžāϕ⧇:
→ Sequence number (order āϜāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ)
→ Checksum (error detect āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ)
→ Source & destination port
āϧāĻžāĻĒ ā§Š — IP Routing (āĻĒāĻĨ āĻ–ā§‹āρāϜāĻž)​

TCP segment-āĻāϰ āωāĻĒāϰ IP āĻāĻ•āϟāĻž header āϝ⧋āĻ— āĻ•āϰ⧇ — āĻāϟāĻžāχ packet:

IP Packet:
┌─────────────────────────────────┐
│ Source IP: 192.168.1.5 │
│ Destination IP: 142.250.80.46 │
│ TTL: 64 │
├─────────────────────────────────┤
│ TCP Segment (data) │
└─────────────────────────────────┘

Router āĻāχ destination IP āĻĻ⧇āϖ⧇ packet forward āĻ•āϰ⧇
āĻĒā§āϰāϤāĻŋāϟāĻž packet āφāϞāĻžāĻĻāĻž route āύāĻŋāϤ⧇ āĻĒāĻžāϰ⧇!
āϧāĻžāĻĒ ā§Ē — ACK āĻ“ Retransmission​
Sender:   Segment 1 āĻĒāĻžāĻ āĻžāϞ⧋ →
Receiver: āĻĒ⧇āϞ⧋ → ACK 1 āĻĒāĻžāĻ āĻžāϞ⧋ ←
Sender: Segment 2 āĻĒāĻžāĻ āĻžāϞ⧋ →
Receiver: āĻĒ⧇āϞ⧋ āύāĻž! (lost)
Sender: Timeout → Segment 2 āφāĻŦāĻžāϰ āĻĒāĻžāĻ āĻžāϞ⧋ →
Receiver: āĻāĻ–āύ āĻĒ⧇āϞ⧋ → ACK 2 ←

🧩 āϧāĻžāĻĒ ā§Ģ — Reassembly (āĻœā§‹āĻĄāĻŧāĻž āϞāĻžāĻ—āĻžāύ⧋)​

Receiver āĻĒ⧇āϞ⧋ (out of order):
Segment 3, Segment 1, Segment 2

Sequence number āĻĻ⧇āϖ⧇ āϏāĻ āĻŋāĻ• order-āĻ āϏāĻžāϜāĻžāϝāĻŧ:
Segment 1 + Segment 2 + Segment 3
↓
"Hello, how are you doing today?" ✅

🌍 āĻāĻ•āϟāĻž Webpage Load āĻšāĻ“āϝāĻŧāĻžāϰ āĻĒ⧁āϰ⧋ āϝāĻžāĻ¤ā§āϰāĻžâ€‹

āϤ⧁āĻŽāĻŋ browser-āĻ āϞāĻŋāĻ–āϞ⧇: google.com

1. DNS lookup:
google.com → 142.250.80.46 (IP āĻŦ⧇āϰ āĻ•āϰāĻž)

2. TCP Handshake:
āϤ⧋āĻŽāĻžāϰ PC ↔ Google server (SYN/SYN-ACK/ACK)

3. TLS Handshake:
Encrypted connection āϤ⧈āϰāĻŋ (HTTPS-āĻāϰ āϜāĻ¨ā§āϝ)

4. HTTP Request:
"GET / HTTP/1.1" āĻĒāĻžāĻ āĻžāύ⧋

5. IP Routing:
Packet āϤ⧋āĻŽāĻžāϰ router → ISP → Google-āĻāϰ server

6. HTTP Response:
Google HTML āĻĒāĻžāĻ āĻžāϞ⧋ → segments āĻšāϝāĻŧ⧇ āφāϏāϞ⧋

7. TCP Reassembly:
Segments āĻœā§‹āĻĄāĻŧāĻž āϞ⧇āϗ⧇ āĻĒ⧁āϰ⧋ HTML āϤ⧈āϰāĻŋ āĻšāϞ⧋

8. Browser render:
āϤ⧁āĻŽāĻŋ Google āĻĻ⧇āĻ–āϤ⧇ āĻĒ⧇āϞ⧇ ✅

đŸŽ¯ āϕ⧇āύ TCP/IP "Fundamental"?​

TCP/IP fundamental āĻ•āĻžāϰāĻŖ āĻāϟāĻž āĻāĻ•āϟāĻž universal standard — āϝ⧇āϕ⧋āύ⧋ device, āϝ⧇āϕ⧋āύ⧋ OS, āϝ⧇āϕ⧋āύ⧋ āĻĻ⧇āĻļ — āϏāĻŦāĻžāχ āĻāĻ•āχ āύāĻŋāϝāĻŧāĻŽā§‡ āĻ•āĻĨāĻž āĻŦāϞ⧇āĨ¤

āϤ⧋āĻŽāĻžāϰ Android phone (Bangladesh)
↕ TCP/IP
Apple server (USA)
↕ TCP/IP
Linux server (Germany)

āϏāĻŦāĻžāχ āĻāĻ•āχ protocol āĻŦā§‹āĻā§‡ → interoperability ✅

TCP/IP āĻ›āĻžāĻĄāĻŧāĻž āĻĒā§āϰāϤāĻŋāϟāĻž company-āϰ āφāϞāĻžāĻĻāĻž protocol āĻĨāĻžāĻ•āϤ⧋ āĻāĻŦāĻ‚ āϤāĻžāϰāĻž āĻāϕ⧇ āĻ…āĻĒāϰ⧇āϰ āϏāĻžāĻĨ⧇ āĻ•āĻĨāĻž āĻŦāϞāϤ⧇ āĻĒāĻžāϰāϤ⧋ āύāĻž — āĻ āĻŋāĻ• āϝ⧇āĻŽāύ āĻĻ⧁āϜāύ āĻŽāĻžāύ⧁āώ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āφāϞāĻžāĻĻāĻž āĻ­āĻžāώāĻžāϝāĻŧ āĻ•āĻĨāĻž āĻŦāϞāϞ⧇ āĻŦā§‹āĻā§‡ āύāĻžāĨ¤

đŸˇī¸ IP = āĻ āĻŋāĻ•āĻžāύāĻž āϞ⧇āϖ⧇ (āϕ⧋āĻĨāĻžāϝāĻŧ āϝāĻžāĻŦ⧇)

đŸ“Ļ TCP = āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧇ āĻĒ⧌āρāϛ⧇ āĻĻ⧇āϝāĻŧ (āĻ āĻŋāĻ•āĻŽāϤ⧋ āĻĒ⧌āρāĻ›āĻžāϞ⧋ āĻ•āĻŋāύāĻž)

🌐 TCP/IP āĻāĻ•āϏāĻžāĻĨ⧇ = internet-āĻāϰ āĻĄāĻžāĻ•āĻŦāĻŋāĻ­āĻžāĻ— — āϚāĻŋāĻ āĻŋ āĻ­āĻžāĻ— āĻ•āϰ⧇, āĻ āĻŋāĻ•āĻžāύāĻž āϞāĻŋāϖ⧇, āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧇ āĻĒāĻžāĻ āĻžāϝāĻŧ, āĻšāĻžāϰāĻŋāϝāĻŧ⧇ āϗ⧇āϞ⧇ āφāĻŦāĻžāϰ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤

🔍 What does the IP layer actually do, and how does it relate to TCP?​

TCP = āĻĄāĻžāĻ•āĻŦāĻŋāĻ­āĻžāϗ⧇āϰ āύāĻŋāϝāĻŧāĻŽāĻ•āĻžāύ⧁āύ
(āϚāĻŋāĻ āĻŋ āύāĻŽā§āĻŦāϰ āĻĻāĻžāĻ“, āĻšāĻžāϰāĻžāϞ⧇ āφāĻŦāĻžāϰ āĻĒāĻžāĻ āĻžāĻ“, order āĻ āĻŋāĻ• āϰāĻžāĻ–ā§‹)

IP = āĻĄāĻžāĻ•āĻĒāĻŋāϝāĻŧāύ
(āĻ āĻŋāĻ•āĻžāύāĻž āĻĻ⧇āϖ⧇, āϰāĻžāĻ¸ā§āϤāĻž āĻ–ā§‹āρāĻœā§‡, āĻĻāϰāϜāĻžāϝāĻŧ āĻĒ⧌āρāϛ⧇ āĻĻ⧇āϝāĻŧ)

āĻāĻ•āĻž TCP āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻž — āϜāĻžāύ⧇ āύāĻž āϕ⧋āĻĨāĻžāϝāĻŧ āϝāĻžāĻŦ⧇
āĻāĻ•āĻž IP āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻž — āϜāĻžāύ⧇ āύāĻž āĻĒ⧌āρāĻ›āĻžāϞ⧋ āĻ•āĻŋāύāĻž
āĻāĻ•āϏāĻžāĻĨ⧇ TCP/IP = āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ delivery system

📌 IP Layer-āĻāϰ āĻŽā§‚āϞ ā§ŠāϟāĻŋ āĻ•āĻžāĻœâ€‹

IP layer three main jobs diagram

📍 āĻ•āĻžāϜ ā§§: Addressing — āĻĒā§āϰāϤāĻŋāϟāĻŋ Packet-āĻ āĻ āĻŋāĻ•āĻžāύāĻž āϞ⧇āĻ–āĻžâ€‹

TCP āϝāĻ–āύ data-āϕ⧇ segments-āĻ āĻ­āĻžāĻ— āĻ•āϰ⧇, IP āϏ⧇āχ āĻĒā§āϰāϤāĻŋāϟāĻŋ segment-āĻāϰ āωāĻĒāϰ āĻāĻ•āϟāĻž header āϜ⧁āĻĄāĻŧ⧇ āĻĻ⧇āϝāĻŧ:

TCP Segment (āĻļ⧁āϧ⧁ data):
┌──────────────────────────┐
│ Port 443 → Port 52341 │
│ Seq: 1, Data: "Hello" │
└──────────────────────────┘

IP Header āϝ⧋āĻ— āĻ•āϰāĻžāϰ āĻĒāϰ (IP Packet):
┌──────────────────────────────────────┐
│ Source IP: 192.168.1.5 │
│ Destination IP: 142.250.80.46 │
│ TTL: 64 │
│ Protocol: TCP (6) │
├──────────────────────────────────────┤
│ TCP Segment āϭ⧇āϤāϰ⧇ āφāϛ⧇ (payload) │
└──────────────────────────────────────┘

TTL (Time To Live) āĻāĻ•āϟāĻž āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ field — āĻĒā§āϰāϤāĻŋāϟāĻŋ router-āĻ āĻāϟāĻž 1 āĻ•āϰ⧇ āĻ•āĻŽā§‡āĨ¤ āĻļā§‚āĻ¨ā§āϝ āĻšāϞ⧇ packet āĻŽā§āϛ⧇ āϝāĻžāϝāĻŧ — āĻāϤ⧇ infinite loop āĻŦāĻ¨ā§āϧ āĻšāϝāĻŧāĨ¤

đŸ—ēī¸ āĻ•āĻžāϜ ⧍: Routing — āϏāĻ āĻŋāĻ• āĻĒāĻĨ⧇ āĻĒāĻžāĻ āĻžāĻ¨ā§‹â€‹

IP routing hop-by-hop diagram

IP-āĻāϰ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ•āĻžāϜ āĻšāϞ⧋ packet-āϕ⧇ āϏāĻ āĻŋāĻ• destination-āĻ āĻĒ⧌āρāϛ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻžāĨ¤ āĻāϟāĻž āĻšāϝāĻŧ hop by hop — router āĻĨ⧇āϕ⧇ router: āĻĒā§āϰāϤāĻŋāϟāĻŋ router āĻāĻ•āϟāĻžāχ āĻĒā§āϰāĻļā§āύ āĻ•āϰ⧇: "āĻāχ destination IP-āĻāϰ āϜāĻ¨ā§āϝ āφāĻŽāĻžāϰ next hop āϕ⧇?" — routing table āĻĻ⧇āϖ⧇ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύ⧇āϝāĻŧ, āϤāĻžāϰāĻĒāϰ forward āĻ•āϰ⧇āĨ¤

IP-āĻāϰ āĻāĻ•āϟāĻž āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āĻšāϞ⧋ āĻāϟāĻž "best effort" — packet āĻĒ⧌āρāĻ›āĻžāĻŦ⧇ āĻ•āĻŋāύāĻž, āĻ•āϤāĻ•ā§āώāĻŖ āϞāĻžāĻ—āĻŦ⧇, order āĻ āĻŋāĻ• āĻĨāĻžāĻ•āĻŦ⧇ āĻ•āĻŋāύāĻž — āĻāϰ āϕ⧋āύ⧋ guarantee āύ⧇āχāĨ¤ āĻāϟāĻž TCP-āĻāϰ āĻ•āĻžāϜāĨ¤

đŸĒ“ āĻ•āĻžāϜ ā§Š: Fragmentation — āĻŦāĻĄāĻŧ Packet āĻ­āĻžāĻ™āĻžâ€‹

āĻĒā§āϰāϤāĻŋāϟāĻŋ network link-āĻāϰ āĻāĻ•āϟāĻž MTU (Maximum Transmission Unit) āφāϛ⧇ — āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āĻ•āϤ āĻŦāĻĄāĻŧ packet āĻĒāĻžāĻ āĻžāύ⧋ āϝāĻžāĻŦ⧇āĨ¤

Ethernet MTU = 1500 bytes
āϤ⧋āĻŽāĻžāϰ packet = 4000 bytes → āϧāϰ⧇ āύāĻž!

IP āϭ⧇āϙ⧇ āĻĢ⧇āϞ⧇:
Fragment 1: bytes 1–1480 [offset: 0, MF=1]
Fragment 2: bytes 1481–2960 [offset: 185, MF=1]
Fragment 3: bytes 2961–4000 [offset: 370, MF=0]

MF = More Fragments flag
MF=1 āĻŽāĻžāύ⧇ āφāϰ⧋ āφāϏāϛ⧇, MF=0 āĻŽāĻžāύ⧇ āĻļ⧇āώ fragment

Destination-āĻ IP āϏāĻŦ fragment āĻœā§‹āĻĄāĻŧāĻž āϞāĻžāĻ—āĻŋāϝāĻŧ⧇ āφāĻŦāĻžāϰ āĻŽā§‚āϞ packet āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĨ¤

🤝 TCP āφāϰ IP āϕ⧀āĻ­āĻžāĻŦ⧇ āĻāĻ•āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āĻ°ā§‡â€‹

āĻāϟāĻžāχ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ…āĻ‚āĻļāĨ¤ āĻĻ⧁āĻŸā§‹ layer-āĻāϰ āĻ•āĻžāϜ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āφāϞāĻžāĻĻāĻž āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāϕ⧇ āĻ…āĻĒāϰ⧇āϰ āĻĒāϰāĻŋāĻĒā§‚āϰāĻ•:

āϤ⧁āĻŽāĻŋ browser-āĻ "Send" āϚāĻžāĻĒāϞ⧇:

Application Layer:
HTTP request āϤ⧈āϰāĻŋ: "GET /index.html"
↓
Transport Layer (TCP):
Data-āϕ⧇ segments-āĻ āĻ­āĻžāĻ— āĻ•āϰ⧇
Sequence number āĻĻ⧇āϝāĻŧ: Seg-1, Seg-2, Seg-3
Port number āϝ⧋āĻ— āĻ•āϰ⧇: 52341 → 443
↓
Internet Layer (IP):
āĻĒā§āϰāϤāĻŋāϟāĻŋ segment-āĻ IP header āϝ⧋āĻ— āĻ•āϰ⧇
Source: 192.168.1.5, Dest: 142.250.80.46
Packet āϤ⧈āϰāĻŋ āĻšāϝāĻŧ
↓
Network Layer:
Binary bits āĻšāϝāĻŧ⧇ cable/Wi-Fi āĻĻāĻŋāϝāĻŧ⧇ āϝāĻžāϝāĻŧ

─────── Network āĻĒāĻžāϰ āĻšāϝāĻŧ⧇ ───────

Receiver-āĻāϰ Network Layer:
Bits → packet
↑
IP Layer:
Header āϖ⧁āϞ⧇ āĻĻ⧇āϖ⧇ — āĻāϟāĻž āĻ•āĻŋ āφāĻŽāĻžāϰ āϜāĻ¨ā§āϝ? āĻšā§āϝāĻžāρ!
TCP segment āĻŦ⧇āϰ āĻ•āϰ⧇ āωāĻĒāϰ⧇ āĻĻ⧇āϝāĻŧ
↑
TCP Layer:
Sequence number āĻĻ⧇āϖ⧇ order āĻ āĻŋāĻ• āĻ•āϰ⧇
ACK āĻĒāĻžāĻ āĻžāϝāĻŧ
āĻĒ⧁āϰ⧋ data āĻœā§‹āĻĄāĻŧāĻž āϞāĻžāĻ—āĻžāϝāĻŧ
↑
Application:
"GET /index.html" āĻĒ⧇āϞ⧋, response āĻĒāĻžāĻ āĻžāϝāĻŧ

đŸ•ĩī¸â€â™‚ī¸ IP āĻšāϞ⧋ "Stateless" — āĻāϟāĻž āĻ•āĻŋāϛ⧁ āĻŽāύ⧇ āϰāĻžāϖ⧇ āύāĻžâ€‹

āĻāϟāĻž TCP-āĻāϰ āϏāĻžāĻĨ⧇ IP-āĻāϰ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ:

āĻŦāĻŋāώāϝāĻŧIPTCP
State āĻŽāύ⧇ āϰāĻžāϖ⧇?āύāĻž — āĻĒā§āϰāϤāĻŋāϟāĻŋ packet āφāϞāĻžāĻĻāĻžāĻšā§āϝāĻžāρ — connection track āĻ•āϰ⧇
Delivery guaranteeāύ⧇āχāφāϛ⧇
Order maintaināύ⧇āχāφāϛ⧇
Error recoveryāύ⧇āχāφāϛ⧇
āĻ•āĻžāĻœā§‡āϰ āϧāϰāύJust deliver āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧋Reliable connection maintain āĻ•āϰ⧋
IP āĻ­āĻžāĻŦ⧇:
"Packet 1 āϕ⧋āĻĨāĻžāϝāĻŧ āϗ⧇āϛ⧇ āϜāĻžāύāĻŋ āύāĻž, āφāĻŽāĻžāϰ āĻ•āĻžāϜ āĻ›āĻŋāϞ forward āĻ•āϰāĻž"
"Packet 2 āφāϞāĻžāĻĻāĻž route āύāĻŋāϝāĻŧ⧇āϛ⧇ — āĻ āĻŋāĻ• āφāϛ⧇"
"Packet 3 āĻšāĻžāϰāĻŋāϝāĻŧ⧇ āϗ⧇āϛ⧇ — āφāĻŽāĻžāϰ āϏāĻŽāĻ¸ā§āϝāĻž āύāĻž"

TCP āĻ­āĻžāĻŦ⧇:
"Packet 3 āĻāĻ–āύ⧋ ACK āφāϏ⧇āύāĻŋ — āφāĻŦāĻžāϰ āĻĒāĻžāĻ āĻžāχ"
"Packet 2 āφāϗ⧇ āĻāϏ⧇āϛ⧇, Packet 1 āĻĒāϰ⧇ — order āĻ āĻŋāĻ• āĻ•āϰāĻŋ"
"āϏāĻŦ āĻĒ⧇āϞāĻžāĻŽ, application-āϕ⧇ āĻĻāĻŋāχ"

đŸ§ŗ IP Packet-āĻāϰ āϭ⧇āϤāϰ⧇ āφāϏāϞ⧇ āϕ⧀ āĻĨāĻžāϕ⧇?​

IP Header (20 bytes minimum):
┌────────────────────────────────────┐
│ Version (4 bits): IPv4 = 4 │
│ Header Length (4 bits) │
│ Total Length (16 bits) │
│ TTL (8 bits): 64, 128... │
│ Protocol (8 bits): TCP=6, UDP=17 │
│ Header Checksum (16 bits) │
│ Source IP (32 bits) │
│ Destination IP (32 bits) │
├────────────────────────────────────┤
│ Payload = TCP Segment │
│ (āϝ⧇āĻ–āĻžāύ⧇ actual data āφāϛ⧇) │
└────────────────────────────────────┘

Protocol field āϟāĻž āĻŦāĻŋāĻļ⧇āώ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ — āĻāϟāĻž āĻĻ⧇āϖ⧇ destination āϜāĻžāύ⧇ payload-āĻāϰ āϭ⧇āϤāϰ⧇ āϕ⧀ āφāϛ⧇āĨ¤ 6 āĻŽāĻžāύ⧇ TCP, 17 āĻŽāĻžāύ⧇ UDP, 1 āĻŽāĻžāύ⧇ ICMP (ping)āĨ¤

đŸ“Ļ TCP āĻŦāϞ⧇: "āφāĻŽāĻŋ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāĻŦā§‹ data āĻ āĻŋāĻ•āĻ āĻžāĻ• āĻĒ⧌āρāĻ›āĻžāĻŦ⧇"

đŸˇī¸ IP āĻŦāϞ⧇: "āφāĻŽāĻŋ āϰāĻžāĻ¸ā§āϤāĻž āϖ⧁āρāĻœā§‡ āĻĻ⧇āĻŦā§‹, āĻŦāĻžāĻ•āĻŋāϟāĻž āϤ⧋āĻŽāĻžāϰ āĻĻāĻžāϝāĻŧ"

āĻĻ⧁āϜāύ āĻŽāĻŋāϞ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ — TCP-āϰ reliability āφāϰ IP-āϰ routing āĻāĻ•āϏāĻžāĻĨ⧇ internet-āϕ⧇ āĻ•āĻžāϜ āĻ•āϰāĻžāϝāĻŧāĨ¤

🆚 What is the difference between the TCP/IP model and the OSI model?​

āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝOSI ModelTCP/IP Model
āωāĻĻā§āĻĻ⧇āĻļā§āϝāĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻĨāĻŋāĻ“āϰ⧇āϟāĻŋāĻ•ā§āϝāĻžāϞ āĻ—āĻžāχāĻĄāϞāĻžāχāύ āĻŦāĻž āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻŽāĻĄā§‡āϞāĨ¤āĻāϟāĻŋ āĻŦāĻžāĻ¸ā§āϤāĻŦ⧇ āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāĻ“āϝāĻŧāĻž āχāĻŽāĻĒā§āϞāĻŋāĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻŽāĻĄā§‡āϞāĨ¤
āϞ⧇āϝāĻŧāĻžāϰ āϏāĻ‚āĻ–ā§āϝāĻžā§­āϟāĻŋ āϞ⧇āϝāĻŧāĻžāϰ āĻĨāĻžāϕ⧇āĨ¤ā§ĒāϟāĻŋ āϞ⧇āϝāĻŧāĻžāϰ āĻĨāĻžāϕ⧇ (Application, Transport, Internet, Network Access)āĨ¤
āĻ‰ā§ŽāĻĒāĻ¤ā§āϤāĻŋISO (International Organization for Standardization) āϤ⧈āϰāĻŋ āĻ•āϰ⧇āϛ⧇āĨ¤ARPANET-āĻāϰ āϜāĻ¨ā§āϝ Department of Defense (DoD) āϤ⧈āϰāĻŋ āĻ•āϰ⧇āϛ⧇āĨ¤

đŸ›Ąī¸ 37. How does TCP ensure reliable data transfer via packet acknowledgment and retransmission?​

TCP āĻšāϞ⧋ āĻāĻ•āϟāĻŋ Reliable āĻŦāĻž āĻ…āĻ¤ā§āϝāĻ¨ā§āϤ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞāĨ¤ āĻāϟāĻŋ āĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻĄā§‡āϟāĻž āĻĒ⧌āρāĻ›āĻžāύ⧋āϰ āύāĻŋāĻļā§āϚāϝāĻŧāϤāĻž āĻĻāĻŋāϤ⧇ āĻĻ⧁āϟāĻŋ āĻĒā§āϰāϧāĻžāύ āĻĒāĻĻā§āϧāϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇:

  1. ✅ Acknowledgment (ACK): āϏ⧇āĻ¨ā§āĻĄāĻžāϰ (Sender) āϕ⧋āύ⧋ āĻĄā§‡āϟāĻž āĻĒā§āϝāĻžāϕ⧇āϟ āĻĒāĻžāĻ āĻžāύ⧋āϰ āĻĒāϰ āϰāĻŋāϏāĻŋāĻ­āĻžāϰ (Receiver) āϏ⧇āϟāĻŋ āĻ āĻŋāĻ•āĻ āĻžāĻ• āϰāĻŋāϏāĻŋāĻ­ āĻ•āϰāϞ⧇, āϤāĻžāϰ āĻĒā§āϰāĻŽāĻžāĻŖ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĢāĻŋāϰāϤāĻŋ āĻāĻ•āϟāĻŋ āϛ⧋āϟ āĻŽā§‡āϏ⧇āϜ āĻĒāĻžāĻ āĻžāϝāĻŧ, āϝāĻžāϕ⧇ ACK āĻŦāϞ⧇āĨ¤
  2. 🔄 Retransmission: āϏ⧇āĻ¨ā§āĻĄāĻžāϰ āĻĒā§āϝāĻžāϕ⧇āϟ āĻĒāĻžāĻ āĻžāύ⧋āϰ āĻĒāϰ āĻāĻ•āϟāĻŋ āϟāĻžāχāĻŽāĻžāϰ (Timer) āĻ…āύ āĻ•āϰ⧇ āϰāĻžāϖ⧇āĨ¤ āϝāĻĻāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻŽāϝāĻŧ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āϰāĻŋāϏāĻŋāĻ­āĻžāϰ⧇āϰ āĻ•āĻžāĻ› āĻĨ⧇āϕ⧇ āϕ⧋āύ⧋ ACK āύāĻž āφāϏ⧇, āϤāĻ–āύ āϏ⧇āĻ¨ā§āĻĄāĻžāϰ āϧāϰ⧇ āύ⧇āϝāĻŧ āϝ⧇ āĻĒā§āϝāĻžāϕ⧇āϟāϟāĻŋ āĻŽāĻžāĻāĻĒāĻĨ⧇ āĻšāĻžāϰāĻŋāϝāĻŧ⧇ āϗ⧇āϛ⧇āĨ¤ āĻĢāϞ⧇ āϏ⧇ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āĻ“āχ āĻĒā§āϝāĻžāϕ⧇āϟāϟāĻŋ āφāĻŦāĻžāϰ āϰāĻŋāĻŸā§āϰāĻžāĻ¨ā§āϏāĻŽāĻŋāϟ āĻŦāĻž āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤

đŸĒŸ What is the sliding window protocol in TCP?​

TCP-āϤ⧇ āĻĒā§āϰāϤāĻŋāϟāĻŋ packet āĻĒāĻžāĻ āĻžāύ⧋āϰ āĻĒāϰ ACK-āĻāϰ āϜāĻ¨ā§āϝ āĻ…āĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰāϞ⧇ āϕ⧀ āĻšāϝāĻŧ?

Stop-and-Wait (naive approach):
Sender: [Seg 1] ————→
←———— [ACK 1]
[Seg 2] ————→
←———— [ACK 2]
[Seg 3] ————→
←———— [ACK 3]

āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻĒāĻžāĻ āĻŋāϝāĻŧ⧇ āĻŦāϏ⧇ āĻĨāĻžāϕ⧋ — network āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āϏāĻŽāϝāĻŧ āĻ–āĻžāϞāĻŋ!
āĻāϟāĻž āĻ…āύ⧇āĻ• āϧ⧀āϰ ❌

āĻāχ āϏāĻŽāĻ¸ā§āϝāĻžāϰ āϏāĻŽāĻžāϧāĻžāύ āĻšāϞ⧋ Sliding Window Protocol — āĻāĻ•āϏāĻžāĻĨ⧇ āĻ…āύ⧇āĻ•āϗ⧁āϞ⧋ packet āĻĒāĻžāĻ āĻžāĻ“, ACK-āĻāϰ āϜāĻ¨ā§āϝ āĻŦāϏ⧇ āĻĨ⧇āϕ⧋ āύāĻžāĨ¤

đŸ–ŧī¸ Sliding Window-āĻāϰ āĻŽā§‚āϞ Idea​

Sliding window steps diagram

đŸŽšī¸ Window Size āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āĻ°ā§‡â€‹

Window size āĻŽāĻžāύ⧇ āĻšāϞ⧋ āĻāĻ•āĻŦāĻžāϰ⧇ āĻ•āϤāϟ⧁āϕ⧁ unacknowledged data "in flight"-āĻ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰāĻŦ⧇āĨ¤

Window size = 4 segments:

Sender āĻāχ 4āϟāĻž āĻāĻ•āϏāĻžāĻĨ⧇ āĻĒāĻžāĻ āĻžāϤ⧇ āĻĒāĻžāϰ⧇:
[Seg 1][Seg 2][Seg 3][Seg 4] → → → network-āĻ āωāĻĄāĻŧāϛ⧇

ACK 1 āĻāϞ⧋ → window āϏāϰāϞ⧋:
[Seg 2][Seg 3][Seg 4][Seg 5] → Seg 5 āĻāĻ–āύ āĻĒāĻžāĻ āĻžāύ⧋ āϝāĻžāĻŦ⧇

ACK 2 āĻāϞ⧋ → āφāĻŦāĻžāϰ āϏāϰāϞ⧋:
[Seg 3][Seg 4][Seg 5][Seg 6] → Seg 6 āĻĒāĻžāĻ āĻžāύ⧋ āϝāĻžāĻŦ⧇

Window āϏāĻŦāϏāĻŽāϝāĻŧ fixed āϏāĻ‚āĻ–ā§āϝāĻ• unACKed segment āϰāĻžāϖ⧇ in-flightāĨ¤

đŸĒŸ āĻĻ⧁āχ āϧāϰāύ⧇āϰ Window​

TCP-āϤ⧇ āφāϏāϞ⧇ āĻĻ⧁āĻŸā§‹ āφāϞāĻžāĻĻāĻž window āĻ•āĻžāϜ āĻ•āϰ⧇ — āĻāχ āĻĻ⧁āĻŸā§‹ āĻŽāĻŋāϞāĻŋāϝāĻŧ⧇āχ actual window size āĻ āĻŋāĻ• āĻšāϝāĻŧ:

ā§§. Receive Window (rwnd) — Flow Control​

Receiver āĻŦāϞ⧇: "āφāĻŽāĻžāϰ buffer-āĻ āĻāĻ–āύ āĻāϤāϟ⧁āϕ⧁ āϜāĻžāϝāĻŧāĻ—āĻž āφāϛ⧇, āĻāϰ āĻŦ⧇āĻļāĻŋ āĻĒāĻžāĻ āĻŋāĻ“ āύāĻžāĨ¤"

Receiver-āĻāϰ buffer: 16KB
āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻ­āϰāĻž: 4KB
rwnd = 16 - 4 = 12KB ← ACK-āĻāϰ āϏāĻžāĻĨ⧇ sender-āϕ⧇ āϜāĻžāύāĻžāϝāĻŧ

Sender āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ 12KB āĻĒāĻžāĻ āĻžāϤ⧇ āĻĒāĻžāϰāĻŦ⧇

⧍. Congestion Window (cwnd) — Congestion Control​

Sender āύāĻŋāĻœā§‡ āύāĻŋāĻœā§‡ āĻ āĻŋāĻ• āĻ•āϰ⧇: "network āĻ•āϤāϟ⧁āϕ⧁ āϏāĻžāĻŽāϞāĻžāϤ⧇ āĻĒāĻžāϰāĻŦ⧇?"

Actual window = min(rwnd, cwnd)

rwnd = 12KB (receiver āĻŦāϞ⧇āϛ⧇)
cwnd = 8KB (sender āĻŽāύ⧇ āĻ•āϰ⧇ network āĻāϤāϟ⧁āϕ⧁ āύāĻŋāϤ⧇ āĻĒāĻžāϰāĻŦ⧇)
→ Actual window = 8KB

đŸšĻ Congestion Control — Window āϕ⧀āĻ­āĻžāĻŦ⧇ āĻŦāĻžāĻĄāĻŧ⧇-āĻ•āĻŽā§‡â€‹

TCP āϚāĻžāϞ⧁ āĻšāϞ⧇ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āĻŦāĻĄāĻŧ window āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āύāĻž — āϧ⧀āϰ⧇ āϧ⧀āϰ⧇ āĻŦāĻžāĻĄāĻŧāĻžāϝāĻŧāĨ¤

Slow Start​
āĻļ⧁āϰ⧁āϤ⧇ cwnd = 1 segment
āĻĒā§āϰāϤāĻŋāϟāĻŋ ACK āĻĒ⧇āϞ⧇ cwnd āĻĻā§āĻŦāĻŋāϗ⧁āĻŖ āĻšāϝāĻŧ:

Round 1: cwnd = 1 → 1 segment āĻĒāĻžāĻ āĻžāϝāĻŧ
Round 2: cwnd = 2 → 2 segment āĻĒāĻžāĻ āĻžāϝāĻŧ
Round 3: cwnd = 4 → 4 segment āĻĒāĻžāĻ āĻžāϝāĻŧ
Round 4: cwnd = 8 → 8 segment āĻĒāĻžāĻ āĻžāϝāĻŧ
(exponential growth!)
Congestion Avoidance (Threshold āĻĒāĻžāϰ āĻšāϞ⧇)​
ssthresh = 16 (slow start threshold) āĻĒāĻžāϰ āĻšāϞ⧇:
āϧ⧀āϰ⧇ āĻŦāĻžāĻĄāĻŧ⧇ — āĻĒā§āϰāϤāĻŋ round-āĻ +1:

cwnd = 17, 18, 19... (linear growth)
Packet Loss āĻšāĻ˛ā§‡â€‹
Timeout āĻšāϞ⧇:
ssthresh = cwnd / 2
cwnd = 1 (āφāĻŦāĻžāϰ āĻļ⧁āϰ⧁ āĻĨ⧇āϕ⧇!)

3 duplicate ACK āĻĒ⧇āϞ⧇ (Fast Retransmit):
ssthresh = cwnd / 2
cwnd = ssthresh (āĻ…āϤāϟāĻž āĻ•āĻŽā§‡ āύāĻž)

🚨 Error āĻšāϞ⧇ āϕ⧀ āĻšāϝāĻŧ — āĻĻ⧁āĻŸā§‹ Strategy​

Go-Back-N​
Seg 1 → ✅
Seg 2 → ✅
Seg 3 → ❌ āĻšāĻžāϰāĻŋāϝāĻŧ⧇ āϗ⧇āϛ⧇!
Seg 4 → ✅ (āĻ•āĻŋāĻ¨ā§āϤ⧁ discard — order āĻŽāĻžāύāϤ⧇ āĻšāĻŦ⧇)
Seg 5 → ✅ (āĻ•āĻŋāĻ¨ā§āϤ⧁ discard)

Sender-āϕ⧇ Seg 3, 4, 5 āφāĻŦāĻžāϰ āĻĒāĻžāĻ āĻžāϤ⧇ āĻšāĻŦ⧇
→ āĻ…āύ⧇āĻ• wasteful āĻ•āĻŋāĻ¨ā§āϤ⧁ simple
Selective Repeat (TCP āϝ⧇āϟāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇)​
Seg 1 → ✅
Seg 2 → ✅
Seg 3 → ❌ āĻšāĻžāϰāĻŋāϝāĻŧ⧇ āϗ⧇āϛ⧇!
Seg 4 → ✅ buffer-āĻ āϰ⧇āϖ⧇ āĻĻāĻžāĻ“
Seg 5 → ✅ buffer-āĻ āϰ⧇āϖ⧇ āĻĻāĻžāĻ“

āĻļ⧁āϧ⧁ Seg 3 āφāĻŦāĻžāϰ āĻĒāĻžāĻ āĻžāĻ“ (SACK — Selective ACK)
→ āĻĻāĻ•ā§āώ, āĻ•āĻŽ retransmission

🆚 Stop-and-Wait vs Sliding Window — āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯â€‹

Stop-and-Wait (window=1):
Time: |--Seg1--|--wait--|--Seg2--|--wait--|--Seg3--|
Network āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āϏāĻŽāϝāĻŧ idle

Sliding Window (window=4):
Time: |--Seg1-Seg2-Seg3-Seg4--|--Seg5-Seg6-Seg7-Seg8--|
Network āϏāĻŦāϏāĻŽāϝāĻŧ āĻŦā§āϝāĻ¸ā§āϤ → throughput āĻ…āύ⧇āĻ• āĻŦ⧇āĻļāĻŋ

📏 Bandwidth-Delay Product — Window āĻ•āϤāϟāĻž āĻŦāĻĄāĻŧ āĻšāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤ?​

Optimal window size āĻŦ⧇āϰ āĻ•āϰāĻžāϰ āĻāĻ•āϟāĻž āϏāĻšāϜ formula āφāϛ⧇:

Bandwidth = 100 Mbps
Round Trip Time (RTT) = 100ms

Optimal window = 100 Mbps × 100ms = 10 Mb = 1.25 MB

āĻŽāĻžāύ⧇ network āϏāĻŦāϏāĻŽāϝāĻŧ āĻŦā§āϝāĻ¸ā§āϤ āϰāĻžāĻ–āϤ⧇
in-flight-āĻ āϏāĻ°ā§āĻŦāĻĻāĻž 1.25MB data āĻĨāĻžāĻ•āĻž āωāϚāĻŋāϤāĨ¤

Window āĻāϰ āĻšā§‡āϝāĻŧ⧇ āϛ⧋āϟ āĻšāϞ⧇: network āĻ–āĻžāϞāĻŋ āĻĨāĻžāϕ⧇, āϧ⧀āϰ
Window āĻāϰ āĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧ āĻšāϞ⧇: congestion, packet loss

🚗 Sliding Window āĻšāϞ⧋ highway-āϤ⧇ āĻ—āĻžāĻĄāĻŧāĻŋ āϚāĻžāϞāĻžāύ⧋āϰ āĻŽāϤ⧋āĨ¤

🛑 Stop-and-Wait = āĻāĻ•āϟāĻž āĻ—āĻžāĻĄāĻŧāĻŋ āĻĒāĻžāĻ āĻžāĻ“, destination-āĻ āĻĒ⧌āρāĻ›āĻžāύ⧋āϰ confirm āĻĒ⧇āϞ⧇ āĻĒāϰ⧇āϰāϟāĻž āĻĒāĻžāĻ āĻžāĻ“āĨ¤ Highway āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āϏāĻŽāϝāĻŧ āĻĢāĻžāρāĻ•āĻžāĨ¤

đŸ›Ŗī¸ Sliding Window = ā§ĒāϟāĻž āĻ—āĻžāĻĄāĻŧāĻŋ āĻāĻ•āϏāĻžāĻĨ⧇ āĻĒāĻžāĻ āĻžāĻ“āĨ¤ āĻĒā§āϰāĻĨāĻŽāϟāĻžāϰ confirm āĻĒ⧇āϞ⧇ ā§ĢāĻŽ āĻ—āĻžāĻĄāĻŧāĻŋ āϰāĻ“āύāĻž āĻĻāĻžāĻ“āĨ¤ Highway āϏāĻŦāϏāĻŽāϝāĻŧ āĻ­āϰāĻž, āϕ⧋āύ⧋ āϏāĻŽāϝāĻŧ āύāĻˇā§āϟ āύ⧇āχāĨ¤

đŸĸ What is TCP slow start and how does it affect initial connection speed?​

TCP Slow Start āĻšāϞ⧋ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇āϰ āĻ•āύāĻœā§‡āĻļāύ (Congestion) āĻŦāĻž āϝāĻžāύāϜāϟ āĻāĻĄāĻŧāĻžāύ⧋āϰ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāϞāĻ—āϰāĻŋāĻĻāĻŽāĨ¤

  • āϝāĻ–āύ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ TCP āĻ•āĻžāύ⧇āĻ•āĻļāύ āĻļ⧁āϰ⧁ āĻšāϝāĻŧ, āϤāĻ–āύ āϏ⧇āĻ¨ā§āĻĄāĻžāϰ āϜāĻžāύ⧇ āύāĻž āϝ⧇ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇āϰ āĻ¸ā§āĻĒāĻŋāĻĄ āĻ•āϤāϟ⧁āϕ⧁āĨ¤ āϤāĻžāχ āϏ⧇ āĻĒā§āϰāĻĨāĻŽā§‡ āϖ⧁āĻŦ āĻ•āĻŽ āĻĒāϰāĻŋāĻŽāĻžāĻŖ (āϝ⧇āĻŽāύ āĻāĻ•āϟāĻŋ) āĻĄāĻžāϟāĻž āĻĒā§āϝāĻžāϕ⧇āϟ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤
  • āĻāϰ āĻĢāĻŋāĻĄāĻŦā§āϝāĻžāĻ• āĻ āĻŋāĻ•āĻ āĻžāĻ• āĻāϞ⧇ āϏ⧇ āĻ¸ā§āĻĒāĻŋāĻĄ āĻĻā§āĻŦāĻŋāϗ⧁āĻŖ āĻ•āϰ⧇ (⧍āϟāĻŋ, āϤāĻžāϰāĻĒāϰ ā§ĒāϟāĻŋ, ā§ŽāϟāĻŋ.. āĻāĻ­āĻžāĻŦ⧇)āĨ¤ āĻ…āĻ°ā§āĻĨāĻžā§Ž āĻļ⧁āϰ⧁āϟāĻž āĻšāϝāĻŧ āϧ⧀āϰāĻ—āϤāĻŋāϤ⧇ (Slow Start) āĻāĻŦāĻ‚ āϧ⧀āϰ⧇ āϧ⧀āϰ⧇ āĻ¸ā§āĻĒāĻŋāĻĄ āĻŦāĻžāĻĄāĻŧ⧇āĨ¤ āĻ āĻ•āĻžāϰāϪ⧇āχ āϕ⧋āύ⧋ āĻŦāĻĄāĻŧ āĻĢāĻžāχāϞ āĻĄāĻžāωāύāϞ⧋āĻĄā§‡āϰ āĻļ⧁āϰ⧁āϤ⧇ āĻ¸ā§āĻĒāĻŋāĻĄ āĻ•āĻŽ āĻĨāĻžāϕ⧇ āĻāĻŦāĻ‚ āĻ•āϝāĻŧ⧇āĻ• āϏ⧇āϕ⧇āĻ¨ā§āĻĄ āĻĒāϰ āϤāĻž āĻĢ⧁āϞ āĻ¸ā§āĻĒāĻŋāĻĄā§‡ āĻ“āϠ⧇āĨ¤

📍 38. What is the role of IP in addressing and routing data packets across networks?​

āϤ⧁āĻŽāĻŋ google.com-āĻ request āĻĒāĻžāĻ āĻžāϞ⧇:
IP āĻ›āĻžāĻĄāĻŧāĻž: "āϕ⧋āĻĨāĻžāϝāĻŧ āϝāĻžāĻŦā§‹?" — āϕ⧇āω āϜāĻžāύ⧇ āύāĻž
IP āĻĻāĻŋāϝāĻŧ⧇: "142.250.80.46-āĻ āϝāĻžāĻ“" — āϏ⧁āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ āĻŋāĻ•āĻžāύāĻž

IP āĻšāϞ⧋ internet-āĻāϰ postal system —
āĻ āĻŋāĻ•āĻžāύāĻž āĻ›āĻžāĻĄāĻŧāĻž āϚāĻŋāĻ āĻŋ āϝ⧇āĻŽāύ āĻĒ⧌āρāĻ›āĻžāϝāĻŧ āύāĻž,
IP āĻ›āĻžāĻĄāĻŧāĻž packet-āĻ“ āĻĒ⧌āρāĻ›āĻžāϝāĻŧ āύāĻžāĨ¤

đŸˇī¸ Part 1: Addressing — āĻĒā§āϰāϤāĻŋāϟāĻŋ Device-āĻāϰ āĻĒāϰāĻŋāϚāϝāĻŧ​

IP Address-āĻāϰ āĻ—āĻ āύ (IPv4)​
IP Address: 192  .  168  .   1  .   5
↑ ↑ ↑ ↑
8 bit 8 bit 8 bit 8 bit = 32 bit āĻŽā§‹āϟ

āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻ…āĻ‚āĻļ: 0–255
āĻŽāĻžāύ⧇: 0.0.0.0 āĻĨ⧇āϕ⧇ 255.255.255.255

IP address-āĻāϰ āĻĻ⧁āĻŸā§‹ āĻ…āĻ‚āĻļ āĻĨāĻžāϕ⧇ — Network part āφāϰ Host part:

192.168.1.5  with subnet mask 255.255.255.0

Network part: 192.168.1 ← āϕ⧋āύ network-āĻ āφāϛ⧋
Host part: .5 ← āϏ⧇āχ network-āĻ āϕ⧋āύ device

Analogy:
192.168.1 = āĻĸāĻžāĻ•āĻžāϰ āĻŽāĻŋāϰāĻĒ⧁āϰ āĻāϞāĻžāĻ•āĻž
.5 = āĻŽāĻŋāϰāĻĒ⧁āϰ⧇āϰ ā§Ģ āύāĻŽā§āĻŦāϰ āĻŦāĻžāĻĄāĻŧāĻŋ
Public vs Private IP​

public private ip diagram

Private IP ranges (āĻļ⧁āϧ⧁ local network-āĻ):
10.0.0.0 – 10.255.255.255
172.16.0.0 – 172.31.255.255
192.168.0.0 – 192.168.255.255

Public IP: globally unique — internet-āĻ āĻĻ⧇āĻ–āĻž āϝāĻžāϝāĻŧ
Private IP: locally unique — āĻļ⧁āϧ⧁ āύāĻŋāĻœā§‡āϰ network-āĻ

âœ‚ī¸ Part 2: Subnetting — Network āĻ­āĻžāĻ— āĻ•āϰāĻžâ€‹

IP address āĻļ⧁āϧ⧁ device āĻšā§‡āύāĻžāϝāĻŧ āύāĻž — āϕ⧋āύ network-āĻ āφāϛ⧇ āϏ⧇āϟāĻžāĻ“ āĻŦāϞ⧇āĨ¤ āĻāϟāĻž āĻ•āϰ⧇ subnet mask āĻĻāĻŋāϝāĻŧ⧇āĨ¤

IP:          192.168.1.5
Subnet mask: 255.255.255.0 (āĻŦāĻž /24 notation-āĻ)

Binary-āĻ:
IP: 11000000.10101000.00000001.00000101
Mask: 11111111.11111111.11111111.00000000
↑
āĻāĻ–āĻžāύ⧇āϰ āĻĒāϰ āĻĨ⧇āϕ⧇ host part

Network: 192.168.1.0
Host: .5

āĻāχ network-āĻ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇: 192.168.1.1 – 192.168.1.254
āĻŽā§‹āϟ: 254āϟāĻŋ host

đŸ—ēī¸ Part 3: Routing — Packet āϕ⧀āĻ­āĻžāĻŦ⧇ āĻĒāĻĨ āĻ–ā§‹āρāĻœā§‡â€‹

Routing āĻšāϞ⧋ IP-āĻāϰ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϜāϟāĻŋāϞ āĻ•āĻžāϜāĨ¤ āĻāĻ•āϟāĻž packet āϤāĻžāϰ destination-āĻ āĻĒ⧌āρāĻ›āĻžāύ⧋āϰ āφāϗ⧇ āĻ…āύ⧇āĻ• router āĻĒāĻžāϰ āĻšāϝāĻŧāĨ¤

Routing Table — Router-āĻāϰ āĻŽāĻžāύāϚāĻŋāĻ¤ā§āĻ°â€‹

āĻĒā§āϰāϤāĻŋāϟāĻŋ router-āĻāϰ āĻāĻ•āϟāĻž routing table āĻĨāĻžāϕ⧇ — āĻāϟāĻž āĻĻ⧇āϖ⧇ āϏ⧇ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύ⧇āϝāĻŧ packet āϕ⧋āĻĨāĻžāϝāĻŧ āĻĒāĻžāĻ āĻžāĻŦ⧇:

Router-āĻāϰ Routing Table:
┌─────────────────â”Ŧ───────────────â”Ŧ───────────â”Ŧ────────┐
│ Destination │ Subnet Mask │ Next Hop │ Interface│
├─────────────────â”ŧ───────────────â”ŧ───────────â”ŧ────────┤
│ 192.168.1.0 │ /24 │ directly │ eth0 │
│ 10.0.0.0 │ /8 │ 203.1.1.1 │ eth1 │
│ 172.16.0.0 │ /16 │ 203.1.1.2 │ eth1 │
│ 0.0.0.0 │ /0 (default) │ 103.45.1.1│ eth2 │
└─────────────────┴───────────────┴───────────┴────────┘

Packet āφāϏāϞ⧋ destination: 10.5.3.2
→ 10.0.0.0/8 match āĻ•āϰ⧇ → 203.1.1.1-āĻ āĻĒāĻžāĻ āĻžāĻ“

Default route (0.0.0.0/0) = "āĻ…āĻ¨ā§āϝ āϕ⧋āύ⧋ rule āύāĻž āĻŽāĻŋāϞāϞ⧇ āĻāĻ–āĻžāύ⧇ āĻĒāĻžāĻ āĻžāĻ“" — āĻāϟāĻž āĻšāϞ⧋ gateway of last resortāĨ¤

đŸ›Ŗī¸ Routing-āĻāϰ āĻĒ⧁āϰ⧋ āϝāĻžāĻ¤ā§āϰāĻž — Hop by Hop​

route journey

đŸšĻ āĻĻ⧁āχ āϧāϰāύ⧇āϰ Routing Protocol​

Router āϕ⧀āĻ­āĻžāĻŦ⧇ āϤāĻžāϰ routing table āϤ⧈āϰāĻŋ āĻ•āϰ⧇? āĻĻ⧁āĻŸā§‹ āωāĻĒāĻžāϝāĻŧ:

Static Routing​
Admin āύāĻŋāĻœā§‡ manually route āϞ⧇āϖ⧇:
"192.168.2.0/24 network-āĻāϰ āϜāĻ¨ā§āϝ 10.0.0.1-āĻ āĻĒāĻžāĻ āĻžāĻ“"

āϏ⧁āĻŦāĻŋāϧāĻž: āϏāĻšāϜ, predictable
āĻ…āϏ⧁āĻŦāĻŋāϧāĻž: network āĻŦāĻĻāϞāĻžāϞ⧇ manually update āĻ•āϰāϤ⧇ āĻšāϝāĻŧ
āĻŦā§āϝāĻŦāĻšāĻžāϰ: āϛ⧋āϟ network, simple topology
Dynamic Routing​

Router āϗ⧁āϞ⧋ āύāĻŋāĻœā§‡ āύāĻŋāĻœā§‡ āĻ…āĻ¨ā§āϝ router-āĻāϰ āϏāĻžāĻĨ⧇ āĻ•āĻĨāĻž āĻŦāϞ⧇ route āĻļ⧇āϖ⧇:

OSPF (Open Shortest Path First):
āĻāĻ•āχ organization-āĻāϰ āĻŽāĻ§ā§āϝ⧇
"āφāĻŽāĻžāϰ āĻ•āĻžāĻ› āĻĨ⧇āϕ⧇ āϕ⧋āύ network āĻ•āϤ āĻĻā§‚āϰ⧇?"
āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻ•āĻŽ cost-āĻāϰ path āĻŦ⧇āϛ⧇ āύ⧇āϝāĻŧ

BGP (Border Gateway Protocol):
Internet-āĻāϰ backbone protocol
ISP āĻĨ⧇āϕ⧇ ISP-āĻ route āĻļ⧇āĻ–āĻžāϝāĻŧ
"Dhaka Telecom → BTCL → Global IX → Google"
āĻŦāĻŋāĻļā§āĻŦ⧇āϰ āϏāĻŦ router BGP āĻĻāĻŋāϝāĻŧ⧇ āĻ•āĻĨāĻž āĻŦāϞ⧇

📏 Longest Prefix Match — Router āϕ⧋āύ Route āĻŦ⧇āϛ⧇ āύ⧇āϝāĻŧ?​

āĻāĻ•āĻžāϧāĻŋāĻ• route match āĻ•āϰāϞ⧇ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ specific (longest prefix) route āĻŦ⧇āϛ⧇ āύ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧ:

Routing Table:
10.0.0.0/8 → Router A
10.5.0.0/16 → Router B
10.5.3.0/24 → Router C
0.0.0.0/0 → Router D (default)

Packet destination: 10.5.3.7

Matches:
10.0.0.0/8 ✅ (8-bit match)
10.5.0.0/16 ✅ (16-bit match)
10.5.3.0/24 ✅ (24-bit match) ← āϏāĻŦāĻšā§‡āϝāĻŧ⧇ specific!
0.0.0.0/0 ✅ (āϏāĻŦāϏāĻŽāϝāĻŧ match)

Winner: 10.5.3.0/24 → Router C āĻĒāĻžāĻ āĻžāĻ“

📄 IP Packet Header — āϭ⧇āϤāϰ⧇ āϕ⧀ āĻĨāĻžāĻ•ā§‡â€‹

 0       4       8      16             32 bits
┌───────â”Ŧ───────â”Ŧ───────────────────────┐
│Version│ IHL │ TOS │ Total Length │
├───────┴───────â”ŧ───────┴───────────────┤
│ Identification│Flags │ Fragment Offset│
├───────────────â”ŧ───────┴───────────────┤
│ TTL │Protocol│Header Checksum│
├───────────────┴────────────────────────┤
│ Source IP Address │
├────────────────────────────────────────┤
│ Destination IP Address │
├────────────────────────────────────────┤
│ Payload (TCP/UDP) │
└────────────────────────────────────────┘

āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ fields:
TTL → loop prevention
Protocol → 6=TCP, 17=UDP, 1=ICMP
Src IP → āϕ⧋āĻĨāĻž āĻĨ⧇āϕ⧇ āĻāϏ⧇āϛ⧇
Dst IP → āϕ⧋āĻĨāĻžāϝāĻŧ āϝāĻžāĻŦ⧇
IP "Best Effort" — āĻāϰ āĻŽāĻžāύ⧇ āϕ⧀?​

IP āϕ⧋āύ⧋ guarantee āĻĻ⧇āϝāĻŧ āύāĻž:

❌ Packet deliver āĻšāĻŦ⧇āχ — guarantee āύ⧇āχ
❌ Order āĻ āĻŋāĻ• āĻĨāĻžāĻ•āĻŦ⧇ — āύ⧇āχ
❌ Duplicate āĻšāĻŦ⧇ āύāĻž — āύ⧇āχ
❌ āĻ•āϤāĻ•ā§āώāĻŖ āϞāĻžāĻ—āĻŦ⧇ — āύ⧇āχ

✅ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŦ⧇ deliver āĻ•āϰāϤ⧇
✅ TTL āĻĻāĻŋāϝāĻŧ⧇ infinite loop āϰ⧋āϧ āĻ•āϰāĻŦ⧇
✅ Checksum āĻĻāĻŋāϝāĻŧ⧇ header corruption āϧāϰāĻŦ⧇

āĻŦāĻžāĻ•āĻŋ āϏāĻŦ guarantee — order, reliability, error recovery — āĻāϗ⧁āϞ⧋ TCP-āĻāϰ āĻ•āĻžāϜāĨ¤ IP āĻļ⧁āϧ⧁ packet-āϕ⧇ āϏāĻ āĻŋāĻ• āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āύāĻŋāϝāĻŧ⧇ āϝāĻžāĻ“āϝāĻŧāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧇āĨ¤

IP-āĻāϰ āĻĻ⧁āĻŸā§‹āχ āĻ•āĻžāϜ āφāϏāϞ⧇ āĻāĻ•āϟāĻžāχ āϞāĻ•ā§āĻˇā§āϝ⧇:

đŸˇī¸ Addressing = "āϤ⧋āĻŽāĻžāϰ āύāĻžāĻŽ-āĻ āĻŋāĻ•āĻžāύāĻž āϕ⧀?" — āĻĒā§āϰāϤāĻŋāϟāĻŋ device-āϕ⧇ unique āĻĒāϰāĻŋāϚāϝāĻŧ āĻĻ⧇āĻ“āϝāĻŧāĻž

đŸ—ēī¸ Routing = "āϏ⧇āχ āĻ āĻŋāĻ•āĻžāύāĻžāϝāĻŧ āϕ⧀āĻ­āĻžāĻŦ⧇ āϝāĻžāĻŦā§‹?" — hop by hop āϏāĻ āĻŋāĻ• āĻĒāĻĨ āĻ–ā§‹āρāϜāĻž

āĻāχ āĻĻ⧁āĻŸā§‹ āĻŽāĻŋāϞ⧇āχ IP āĻĒ⧁āϰ⧋ internet-āϕ⧇ āĻāĻ•āϟāĻž connected network āĻŦāĻžāύāĻžāϝāĻŧ — āϝ⧇āĻ–āĻžāύ⧇ Bangladesh-āĻāϰ āĻāĻ•āϟāĻž phone America-āϰ āĻāĻ•āϟāĻž server-āĻāϰ āϏāĻžāĻĨ⧇ āĻ•āĻĨāĻž āĻŦāϞāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

🔄 What is the difference between static routing and dynamic routing?​

Static Routing  = GPS āĻ›āĻžāĻĄāĻŧāĻž āĻĒ⧁āϰāύ⧋ map āĻĻ⧇āϖ⧇ āĻ—āĻžāĻĄāĻŧāĻŋ āϚāĻžāϞāĻžāύ⧋
āϰāĻžāĻ¸ā§āϤāĻž āĻŦāĻ¨ā§āϧ āĻšāϞ⧇ āύāĻŋāĻœā§‡āχ āφāϟāϕ⧇ āϝāĻžāĻŦ⧇

Dynamic Routing = Real-time GPS (Google Maps)
āϝāĻžāύāϜāϟ āĻšāϞ⧇ āύāĻŋāĻœā§‡āχ alternative route āĻ–ā§‹āρāĻœā§‡ āύ⧇āϝāĻŧ

📌 Static Routing āϕ⧀?​

Network admin manually āĻĒā§āϰāϤāĻŋāϟāĻŋ route āϞāĻŋāϖ⧇ āĻĻ⧇āϝāĻŧāĨ¤ Router āύāĻŋāĻœā§‡ āĻĨ⧇āϕ⧇ āĻ•āĻŋāϛ⧁ āĻļ⧇āϖ⧇ āύāĻžāĨ¤

Network admin manually configure āĻ•āϰ⧇:
ip route 192.168.2.0/24 via 10.0.0.1
ip route 172.16.0.0/16 via 10.0.0.2
ip route 0.0.0.0/0 via 203.1.1.1

Router āĻļ⧁āϧ⧁ āĻāχ fixed rules āĻŽā§‡āύ⧇ āϚāϞ⧇āĨ¤
āύāϤ⧁āύ network āϝ⧋āĻ— āĻšāϞ⧇ → admin āφāĻŦāĻžāϰ manually āϞāĻŋāĻ–āĻŦ⧇
āϕ⧋āύ⧋ link down āĻšāϞ⧇ → router āϜāĻžāύ⧇ āύāĻž, āϐ route-āχ try āĻ•āϰ⧇

🔄 Dynamic Routing āϕ⧀?​

Router āϗ⧁āϞ⧋ āύāĻŋāĻœā§‡āϰāĻž āύāĻŋāĻœā§‡āϰāĻž āĻ•āĻĨāĻž āĻŦāϞ⧇ route āĻļ⧇āϖ⧇ āĻāĻŦāĻ‚ network āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻšāϞ⧇ automatically update āĻ•āϰ⧇āĨ¤

Router A → Router B-āϕ⧇ āĻŦāϞ⧇: "āφāĻŽāĻžāϰ āĻ•āĻžāϛ⧇ 192.168.1.0/24 āφāϛ⧇"
Router B → Router C-āϕ⧇ āĻŦāϞ⧇: "A-āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ 192.168.1.0/24 āϝāĻžāĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧ"
Router C → āĻļāĻŋāĻ–āϞ⧋: "192.168.1.0/24 āĻĒ⧇āϤ⧇ āĻšāϞ⧇ B-āϤ⧇ āĻĒāĻžāĻ āĻžāĻ“"

āϕ⧋āύ⧋ link āĻšāĻ āĻžā§Ž down āĻšāϞ⧇:
Router āϗ⧁āϞ⧋ āύāĻŋāĻœā§‡āϰāĻžāχ āύāϤ⧁āύ route āϖ⧁āρāĻœā§‡ āύ⧇āϝāĻŧ — admin āϞāĻžāϗ⧇ āύāĻž

static vs dynamic routing

  • 📌 Static Routing: āĻĄāĻžāϟāĻž āϕ⧋āύ āĻĒāĻĨ⧇ āϝāĻžāĻŦ⧇, āϤāĻž āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻ…ā§āϝāĻžāĻĄāĻŽāĻŋāύāĻŋāĻ¸ā§āĻŸā§āϰ⧇āϟāϰ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ āϰāĻžāωāϟāĻžāϰ⧇ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰ⧇ āĻĻ⧇āύāĨ¤ āĻĒāĻĨ āύāĻˇā§āϟ āĻšāϞ⧇ āĻ…āĻŸā§‹āĻŽā§‡āϟāĻŋāĻ• āĻ…āĻ¨ā§āϝ āĻĒāĻĨ āϖ⧁āρāĻœā§‡ āĻĒāĻžāϝāĻŧ āύāĻžāĨ¤ āϛ⧋āϟ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇ āĻ­āĻžāϞ⧋āĨ¤
  • 🔄 Dynamic Routing: āϰāĻžāωāϟāĻžāϰāϗ⧁āϞ⧋ āύāĻŋāĻœā§‡āϰāĻžāχ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…āĻŸā§‹āĻŽā§‡āϟāĻŋāĻ•ā§āϝāĻžāϞāĻŋ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇āϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻž, āĻ¸ā§āĻĒāĻŋāĻĄ, āĻāĻŦāĻ‚ āĻŸā§āϰāĻžāĻĢāĻŋāĻ• āĻšāĻŋāϏāĻžāĻŦ āĻ•āϰ⧇ āĻŦ⧇āĻ¸ā§āϟ āĻĒāĻĨ āϖ⧁āρāĻœā§‡ āύ⧇āϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āĻĒāĻĨ āĻĄāĻžāωāύ āĻšāϞ⧇ āϏ⧇ āύāĻŋāĻœā§‡āχ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻĒāĻĨ āĻŦ⧇āϛ⧇ āύ⧇āϝāĻŧāĨ¤ āĻŦāĻĄāĻŧ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻŦāĻž āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡ āĻāϟāĻŋāχ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧāĨ¤

đŸ—ēī¸ What is OSPF and BGP, and where are they used?​

OSPF = āĻāĻ•āϟāĻž organization-āĻāϰ āϭ⧇āϤāϰ⧇āϰ routing
(āϤ⧋āĻŽāĻžāϰ āĻ…āĻĢāĻŋāϏ⧇āϰ āϏāĻŦ router āύāĻŋāĻœā§‡āϰāĻž āĻ•āĻĨāĻž āĻŦāϞ⧇)

BGP = āĻĒ⧃āĻĨāĻŋāĻŦā§€āϰ āϏāĻŦ organization-āĻāϰ āĻŽāĻ§ā§āϝ⧇ routing
(Grameenphone, Google, AT&T āĻāϕ⧇ āĻ…āĻĒāϰāϕ⧇ route āϜāĻžāύāĻžāϝāĻŧ)

āĻāχ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝāϟāĻžāϕ⧇ āĻŦāϞ⧇ IGP vs EGP:

  • IGP (Interior Gateway Protocol) → āĻāĻ•āϟāĻž AS-āĻāϰ āϭ⧇āϤāϰ⧇ → OSPF
  • EGP (Exterior Gateway Protocol) → AS-āĻāϰ āĻŦāĻžāχāϰ⧇ → BGP

AS (Autonomous System) āĻŽāĻžāύ⧇ āĻāĻ•āϟāĻž organization-āĻāϰ āĻĒ⧁āϰ⧋ network āϝ⧇āϟāĻž āĻāĻ•āϜāύ⧇āϰ control-āĻāĨ¤


đŸ—ēī¸ Part 1: OSPF āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāĻ¤â€‹

ospf_link_state_diagram diagram

âš™ī¸ OSPF āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ — āϧāĻžāĻĒ⧇ āϧāĻžāĻĒā§‡â€‹

āϧāĻžāĻĒ ā§§: Neighbor Discovery

Router āϚāĻžāϞ⧁ āĻšāϞ⧇ āϏ⧇ "Hello" packet broadcast āĻ•āϰ⧇:
"āφāĻŽāĻŋ Router A, āφāĻŽāĻžāϰ IP 10.0.0.1, āϕ⧇ āφāϛ⧋ āĻĒāĻžāĻļ⧇?"

āĻĒā§āϰāϤāĻŋāĻŦ⧇āĻļā§€ router Hello-āϰ reply āĻĻ⧇āϝāĻŧ:
"āφāĻŽāĻŋ Router B — āϚāϞ⧋ Neighbor āĻšāχ"

Hello packet āĻĒā§āϰāϤāĻŋ 10 seconds-āĻ āĻĒāĻžāĻ āĻžāϝāĻŧ
40 seconds Hello āύāĻž āĻĒ⧇āϞ⧇ → neighbor dead āϧāϰāĻž āĻšāϝāĻŧ

āϧāĻžāĻĒ ā§¨: LSA Exchange (Link State Advertisement)

āĻĒā§āϰāϤāĻŋāϟāĻŋ router āϤāĻžāϰ āύāĻŋāĻœā§‡āϰ link-āĻāϰ āϤāĻĨā§āϝ āĻĒāĻžāĻ āĻžāϝāĻŧ:
Router A āĻŦāϞ⧇: "āφāĻŽāĻžāϰ āϏāĻžāĻĨ⧇ B āφāϛ⧇ (cost 10), C āφāϛ⧇ (cost 5)"
Router B āĻŦāϞ⧇: "āφāĻŽāĻžāϰ āϏāĻžāĻĨ⧇ A āφāϛ⧇ (cost 10), D āφāϛ⧇ (cost 3)"

āĻāχ āϤāĻĨā§āϝāϗ⧁āϞ⧋ āϏāĻŦ router-āĻ flood āĻšāϝāĻŧ
→ āĻĒā§āϰāϤāĻŋāϟāĻŋ router āĻĒ⧁āϰ⧋ network-āĻāϰ map āĻĒāĻžāϝāĻŧ
āĻāχ map-āϕ⧇ āĻŦāϞ⧇ LSDB (Link State Database)

āϧāĻžāĻĒ ā§Š: Dijkstra's Algorithm

āĻĒā§āϰāϤāĻŋāϟāĻŋ router āύāĻŋāĻœā§‡ LSDB āĻĻ⧇āϖ⧇
Dijkstra āϚāĻžāϞāĻžāϝāĻŧ → shortest path tree āĻŦ⧇āϰ āĻ•āϰ⧇
Routing table āϤ⧈āϰāĻŋ āĻšāϝāĻŧ

A āĻĨ⧇āϕ⧇ E āϝāĻžāĻ“āϝāĻŧāĻžāϰ āϏāĻŦ path:
A→B→D→E = 10+3+2 = 15
A→C→D→E = 5+8+2 = 15
A→B→C→D→E = āĻ…āύ⧇āĻ• āĻŦ⧇āĻļāĻŋ

āĻĻ⧁āĻŸā§‹ tie → load balance āĻ•āϰāĻž āϝāĻžāϝāĻŧ!

āϧāĻžāĻĒ ā§Ē: Link Failure āĻšāϞ⧇

B-D link āĻšāĻ āĻžā§Ž down:
B āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āύāϤ⧁āύ LSA flood āĻ•āϰ⧇:
"B-D link āφāϰ āύ⧇āχ!"

āϏāĻŦ router āύāϤ⧁āύ āϤāĻĨā§āϝ āĻĒ⧇āϞ⧋
āύāϤ⧁āύ Dijkstra āϚāĻžāϞāĻžāϞ⧋
āύāϤ⧁āύ routing table: A→E āĻāϰ āϜāĻ¨ā§āϝ A→C→D→E
~āϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡āϰ āĻŽāĻ§ā§āϝ⧇ converge!
đŸĸ OSPF Area — āĻŦāĻĄāĻŧ Network-āϕ⧇ āĻ­āĻžāĻ— āĻ•āϰāĻžâ€‹
āĻŦāĻĄāĻŧ network-āĻ āϏāĻŦ router-āĻ āϏāĻŦ LSA flood āĻ•āϰāϞ⧇:
→ āĻ…āύ⧇āĻ• CPU āĻ–āϰāϚ
→ āĻ…āύ⧇āĻ• bandwidth āύāĻˇā§āϟ

āϏāĻŽāĻžāϧāĻžāύ: Area āĻĻāĻŋāϝāĻŧ⧇ āĻ­āĻžāĻ— āĻ•āϰ⧋

Area 0 (Backbone): āϏāĻŦ Area-āϰ hub
Area 1: āĻāĻ•āϟāĻž department
Area 2: āφāϰ⧇āĻ•āϟāĻž department

Area 1-āĻāϰ LSA āĻļ⧁āϧ⧁ Area 1-āĻ flood āĻšāϝāĻŧ
Area 0 āĻļ⧁āϧ⧁ summary āϜāĻžāύ⧇ — details āύāĻž
→ CPU āĻ“ bandwidth āĻ…āύ⧇āĻ• āĻ•āĻŽ āϞāĻžāϗ⧇

🌐 Part 2: BGP āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāĻ¤â€‹

BGP āĻšāϞ⧋ internet-āĻāϰ language — āϝāĻžāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻĒ⧃āĻĨāĻŋāĻŦā§€āϰ āϏāĻŦ ISP āĻ“ organization āĻāϕ⧇ āĻ…āĻĒāϰāϕ⧇ route āϜāĻžāύāĻžāϝāĻŧāĨ¤

đŸĸ Autonomous System (AS) āϕ⧀?​
AS = āĻāĻ•āϟāĻž organization-āĻāϰ āĻĒ⧁āϰ⧋ network
āϝ⧇āϟāĻž āϤāĻžāϰāĻž āύāĻŋāĻœā§‡āϰāĻž control āĻ•āϰ⧇

AS Number (ASN) āĻĻāĻŋāϝāĻŧ⧇ āĻšā§‡āύāĻž āϝāĻžāϝāĻŧ:
Google: AS15169
Cloudflare: AS13335
BTCL: AS17494
Grameenphone:AS24122

āĻĒā§āϰāϤāĻŋāϟāĻŋ AS-āĻāϰ āϭ⧇āϤāϰ⧇ OSPF/RIP āϚāϞ⧇
AS-āĻāϰ āĻŦāĻžāχāϰ⧇ BGP āϚāϞ⧇

bgp_autonomous_systems diagram

âš™ī¸ BGP āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āĻ°ā§‡â€‹

āϧāĻžāĻĒ ā§§: TCP Connection āĻ¸ā§āĻĨāĻžāĻĒāύ

BGP router āĻĒā§āϰāĻĨāĻŽā§‡ TCP port 179-āĻ connect āĻ•āϰ⧇
(OSPF multicast, BGP TCP — āĻāϟāĻžāχ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ)

Router A → Router B: TCP SYN (port 179)
Connection āĻšāϞ⧇ → BGP session āĻļ⧁āϰ⧁

āϧāĻžāĻĒ ā§¨: Route Advertisement

Google (AS15169) āĻŦāϞ⧇:
"āφāĻŽāĻžāϰ āĻ•āĻžāϛ⧇ 142.250.0.0/16 āφāϛ⧇
AS Path: [15169]"

AT&T (AS7018) āĻļ⧁āύāϞ⧋, āύāĻŋāĻœā§‡āϰ AS āϝ⧋āĻ— āĻ•āϰ⧇ forward āĻ•āϰāϞ⧋:
"142.250.0.0/16 āĻĒ⧇āϤ⧇ āĻšāϞ⧇ āφāĻŽāĻžāϰ āĻĻāĻŋāϝāĻŧ⧇ āϝāĻžāĻ“
AS Path: [7018, 15169]"

India Transit (AS4755) āφāĻŦāĻžāϰ forward āĻ•āϰāϞ⧋:
AS Path: [4755, 7018, 15169]

Bangladesh ISP āĻļāĻŋāĻ–āϞ⧋:
"Google-āĻ āϝ⧇āϤ⧇ āĻšāϞ⧇: 4755→7018→15169"

āϧāĻžāĻĒ ā§Š: AS Path Loop Prevention

BGP loop detect āĻ•āϰ⧇ AS Path āĻĻāĻŋāϝāĻŧ⧇:

Router āύāĻŋāĻœā§‡āϰ AS number āĻĒāĻĨ⧇ āĻĻ⧇āĻ–āϞ⧇:
"āĻāχ route āφāĻŽāĻžāϰ āĻ•āĻžāĻ› āĻĨ⧇āϕ⧇āχ āĻāϏ⧇āϛ⧇ — loop!"
→ Route āĻŦāĻžāϤāĻŋāϞ āĻ•āϰ⧇

āĻāϟāĻž OSPF-āĻāϰ TTL-āĻāϰ āĻŽāϤ⧋ āĻ•āĻžāϜ āĻ•āϰ⧇
🏆 BGP Best Path Selection​

BGP shortest path āĻĻ⧇āϖ⧇ āύāĻž — āĻ…āύ⧇āĻ• āĻ•āĻŋāϛ⧁ āĻĻ⧇āϖ⧇:

BGP decision process (āωāĻĒāϰ āĻĨ⧇āϕ⧇ āύāĻŋāĻšā§‡):

1. Weight (Cisco specific) → āĻŦ⧇āĻļāĻŋ = āĻ­āĻžāϞ⧋
2. Local Preference → āĻŦ⧇āĻļāĻŋ = āĻ­āĻžāϞ⧋
3. Locally originated? → āύāĻŋāĻœā§‡āϰ route = āĻ­āĻžāϞ⧋
4. AS Path length → āĻ•āĻŽ hop = āĻ­āĻžāϞ⧋
5. Origin type → IGP > EGP > incomplete
6. MED (metric) → āĻ•āĻŽ = āĻ­āĻžāϞ⧋
7. eBGP over iBGP → external = āĻ­āĻžāϞ⧋
8. Router ID → āĻ•āĻŽ = tiebreaker

Business policy āĻāĻ–āĻžāύ⧇ āĻ…āύ⧇āĻ• āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ:
"āφāĻŽāĻžāϰ competitor-āĻāϰ AS āĻĻāĻŋāϝāĻŧ⧇ traffic āϝāĻžāĻŦ⧇ āύāĻž"
→ Local Preference āĻ•āĻŽāĻŋāϝāĻŧ⧇ āϏ⧇āχ route avoid āĻ•āϰāĻž āĻšāϝāĻŧ

🤔 āϕ⧋āĻĨāĻžāϝāĻŧ āϕ⧋āύāϟāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāϝāĻŧ?​

University of Dhaka campus:
āϭ⧇āϤāϰ⧇: OSPF
(āϏāĻŦ building-āĻāϰ router āĻāϕ⧇ āĻ…āĻĒāϰ⧇āϰ āϏāĻžāĻĨ⧇ OSPF)
āĻŦāĻžāχāϰ⧇: BGP
(BTCL āĻŦāĻž GP-āĻāϰ āϏāĻžāĻĨ⧇ BGP peering)

Google-āĻāϰ network:
āϭ⧇āϤāϰ⧇: IS-IS (OSPF-āĻāϰ alternative, āĻŦāĻĄāĻŧ scale-āĻ āĻ­āĻžāϞ⧋)
āĻŦāĻžāχāϰ⧇: BGP (āϏāĻŦ ISP-āĻāϰ āϏāĻžāĻĨ⧇)

āϤ⧋āĻŽāĻžāϰ āĻŦāĻžāĻĄāĻŧāĻŋāϰ router:
āϭ⧇āϤāϰ⧇: Static route
āĻŦāĻžāχāϰ⧇: BGP (ISP-āĻāϰ āϏāĻžāĻĨ⧇ — āϤ⧁āĻŽāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻ“ āύāĻž)

đŸ—ēī¸ OSPF = āĻ…āĻĢāĻŋāϏ⧇āϰ āϭ⧇āϤāϰ⧇āϰ intercom system āϏāĻŦāĻžāχ āϏāĻŦāĻžāϰ āϏāĻžāĻĨ⧇ āĻ•āĻĨāĻž āĻŦāϞ⧇, shortest path āϜāĻžāύ⧇, āϕ⧇āω āĻ•āĻĨāĻž āύāĻž āĻŦāϞāϞ⧇ āĻŦ⧁āĻā§‡ āϏ⧇ āϚāϞ⧇ āϗ⧇āϛ⧇

🌐 BGP = āĻĻ⧇āĻļ⧇āϰ āĻŽāĻ§ā§āϝ⧇ diplomatic communication āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĻ⧇āĻļ (AS) āύāĻŋāĻœā§‡āϰ āύāĻŋāϝāĻŧāĻŽā§‡ āϚāϞ⧇, āĻļ⧁āϧ⧁ border-āĻ āĻ•āĻĨāĻž āĻšāϝāĻŧ, āĻļ⧁āϧ⧁ shortest āύāĻž — political policy-āĻ“ āĻŽāĻžāύ⧇

  • đŸ—ēī¸ OSPF (Open Shortest Path First): āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āχāĻ¨ā§āϟāĻžāϰāύāĻžāϞ (IGP) āĻĄāĻžāχāύāĻžāĻŽāĻŋāĻ• āϰāĻžāωāϟāĻŋāĻ‚ āĻĒā§āϰāĻŸā§‹āĻ•āϞ, āϝāĻž āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒā§āϰāϤāĻŋāĻˇā§āĻ āĻžāύ āĻŦāĻž āϞ⧋āĻ•āĻžāϞ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇āϰ āϭ⧇āϤāϰ⧇ (āϝ⧇āĻŽāύ āĻāĻ•āϟāĻŋ āĻ­āĻžāĻ°ā§āϏāĻŋāϟāĻŋ āĻ•ā§āϝāĻžāĻŽā§āĻĒāĻžāϏ āĻŦāĻž āĻ•āĻ°ā§āĻĒā§‹āϰ⧇āϟ āĻ…āĻĢāĻŋāϏ) āϰāĻžāωāϟāĻžāϰāϗ⧁āϞ⧋āϰ āĻŽāĻžāĻā§‡ āĻĄā§‡āϟāĻž āĻĒāĻžāĻ āĻžāύ⧋āϰ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻĻā§āϰ⧁āϤāϤāĻŽ āĻŦāĻž āĻļāĻ°ā§āĻŸā§‡āĻ¸ā§āϟ āĻĒāĻžāĻĨ āϖ⧁āρāĻœā§‡ āĻŦ⧇āϰ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧāĨ¤
  • 🌐 BGP (Border Gateway Protocol): āĻāϟāĻŋ āĻāĻ•ā§āϏāϟāĻžāĻ°ā§āύāĻžāϞ (EGP) āϰāĻžāωāϟāĻŋāĻ‚ āĻĒā§āϰāĻŸā§‹āĻ•āϞāĨ¤ āĻāϟāĻŋ āĻĒ⧁āϰ⧋ āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡āϰ "GPS" āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤ BGP āĻŦāĻŋāĻļā§āĻŦ⧇āϰ āĻŦāĻĄāĻŧ āĻŦāĻĄāĻŧ ISP āĻāĻŦāĻ‚ āĻĄā§‡āϟāĻž āϏ⧇āĻ¨ā§āϟāĻžāϰāϗ⧁āϞ⧋āϰ āĻŽāĻžāĻā§‡ āĻĄā§‡āϟāĻž āϰāĻžāωāϟ āĻ•āϰāϤ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤ āϝāĻ–āύ āĻĢ⧇āϏāĻŦ⧁āĻ• āĻŦāĻž āϗ⧁āĻ—āϞ⧇āϰ āĻ—ā§āϞ⧋āĻŦāĻžāϞ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻĄāĻžāωāύ āĻšāϝāĻŧ, āϤāĻ–āύ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāχ BGP error-āϕ⧇āχ āĻĻāĻžāϝāĻŧā§€ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤

đŸšĒ 39. What are ports and sockets in TCP/IP communication?​

āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡ āĻĄāĻžāϟāĻž āĻŸā§āϰāĻžāĻ¨ā§āϏāĻĢāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§‹āĻ°ā§āϟ āĻāĻŦāĻ‚ āϏāϕ⧇āϟ āĻ…āĻ¤ā§āϝāĻ¨ā§āϤ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ•āύāϏ⧇āĻĒā§āϟ:

  • đŸšĒ Port: āφāχāĻĒāĻŋ āĻ…ā§āϝāĻžāĻĄā§āϰ⧇āϏ āĻĻāĻŋāϝāĻŧ⧇ āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ āĻŦāĻžāĻĄāĻŧāĻŋāϤ⧇ āĻĒ⧌āρāĻ›āĻžāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϏ⧇āχ āĻŦāĻžāĻĄāĻŧāĻŋāϰ āϕ⧋āύ āĻĻāϰāϜāĻžāϝāĻŧ āϝāĻžāĻŦ⧇āύ, āϤāĻž āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰ⧇ āĻĒā§‹āĻ°ā§āϟāĨ¤ āĻāĻ•āϟāĻŋ āφāχāĻĒāĻŋāϤ⧇ āĻ…āύ⧇āĻ•āϗ⧁āϞ⧋ āĻĒā§‹āĻ°ā§āϟ (ā§Ļ āĻĨ⧇āϕ⧇ ā§Ŧā§Ģ,ā§Ģā§Šā§Ģ) āĻĨāĻžāϕ⧇, āϝāĻž āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ⧇āϰ āϭ⧇āϤāϰ⧇āϰ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻŦāĻž āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āĻĒā§āϰāĻŦ⧇āĻļāĻĻā§āĻŦāĻžāϰ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤ (āϝ⧇āĻŽāύ HTTP āĻāϰ āϜāĻ¨ā§āϝ 80, HTTPS āĻāϰ āϜāĻ¨ā§āϝ 443)āĨ¤
  • 🔌 Socket: āϏāϕ⧇āϟ āĻšāϞ⧋ IP āĻ…ā§āϝāĻžāĻĄā§āϰ⧇āϏ āĻāĻŦāĻ‚ āĻĒā§‹āĻ°ā§āϟ āύāĻžāĻŽā§āĻŦāĻžāϰ⧇āϰ āϏāĻŽāĻ¨ā§āĻŦāϝāĻŧ (āϝ⧇āĻŽāύ 192.168.1.1:80)āĨ¤ āĻāϟāĻŋ āĻĻ⧁āϟāĻŋ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āϝ⧋āĻ—āĻžāϝ⧋āĻ— āĻ¸ā§āĻĨāĻžāĻĒāύāĻ•āĻžāϰ⧀ āĻāĻ•āϟāĻŋ āϞāϜāĻŋāĻ•ā§āϝāĻžāϞ āĻļ⧇āώ āĻĒā§āϰāĻžāĻ¨ā§āϤ āĻŦāĻž āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āϟ (Endpoint)āĨ¤

📌 What are well-known ports and ephemeral ports?​

  • ⭐ Well-known Ports: āĻĒā§‹āĻ°ā§āϟ āύāĻžāĻŽā§āĻŦāĻžāϰ 0 āĻĨ⧇āϕ⧇ 1023 āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻĒā§‹āĻ°ā§āϟāϗ⧁āϞ⧋āϕ⧇ āĻ“āϝāĻŧ⧇āϞ-āύ⧋āύ āĻĒā§‹āĻ°ā§āϟ āĻŦāϞāĻž āĻšāϝāĻŧāĨ¤ āĻāϗ⧁āϞ⧋ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŦāĻž āĻ—ā§āϞ⧋āĻŦāĻžāϞāĻŋ āĻĒāϰāĻŋāϚāĻŋāϤ āϏāĻžāĻ°ā§āĻ­āĻŋāϏāϗ⧁āϞ⧋āϰ āϜāĻ¨ā§āϝ āϰāĻŋāϜāĻžāĻ°ā§āĻ­ āĻ•āϰāĻž āĻĨāĻžāϕ⧇āĨ¤ (āϝ⧇āĻŽāύ: FTP-21, SSH-22, DNS-53, HTTP-80)āĨ¤
  • 🕒 Ephemeral Ports: āĻāϗ⧁āϞ⧋āϕ⧇ āĻĄāĻžāϝāĻŧāύāĻžāĻŽāĻŋāĻ• āĻŦāĻž āĻ•ā§āώāĻŖāĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻĒā§‹āĻ°ā§āϟ āĻŦāϞāĻž āĻšāϝāĻŧ (āϏāĻžāϧāĻžāϰāĻŖāϤ ā§Ē⧝⧧ā§Ģ⧍ āĻĨ⧇āϕ⧇ ā§Ŧā§Ģā§Ģā§Šā§Ģ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ)āĨ¤ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āϝāĻ–āύ āϕ⧋āύ⧋ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻ•āϰ⧇, āϤāĻ–āύ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻŦāĻž āχāωāϜāĻžāϰ āĻĄāĻŋāĻ­āĻžāχāϏ⧇āϰ āĻ“āĻāϏ (OS) āĻ“āχ āϏ⧇āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻžāĻŽāϝāĻŧāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āĻ°â€ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āĻāĻĢāĻŋāĻŽā§‡āϰāĻžāϞ āĻĒā§‹āĻ°ā§āϟ āϖ⧁āϞ⧇ āĻĻ⧇āϝāĻŧ āĻāĻŦāĻ‚ āĻ•āĻžāϜ āĻļ⧇āώ⧇ āϤāĻž āĻŦāĻ¨ā§āϧ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧāĨ¤

🔌 What is a socket and how is one created programmatically?​

āϏāϕ⧇āϟ āĻšāϞ⧋ āĻāĻ•āϟāĻŋ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻŋāĻ‚ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻŦāĻž API, āϝāĻž āĻĻāĻŋāϝāĻŧ⧇ āĻ…āĻĒāĻžāϰ⧇āϟāĻŋāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻ•āĻŽāĻŋāωāύāĻŋāϕ⧇āĻļāύ āĻšā§āϝāĻžāĻ¨ā§āĻĄā§‡āϞ āĻ•āϰ⧇āĨ¤

  • āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻŋāĻ‚āϝāĻŧ⧇ āϏāϕ⧇āϟ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ (āϝ⧇āĻŽāύ āĻĒāĻžāχāĻĨāύ⧇) socket() āĻĢāĻžāĻ‚āĻļāύ āĻ•āϞ āĻ•āϰāϤ⧇ āĻšāϝāĻŧāĨ¤ āĻāϰāĻĒāϰ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āϏ⧇āϟāĻŋāϕ⧇ bind() āĻ•āϰ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒā§‹āĻ°ā§āĻŸā§‡ āϞāĻŋāϏ⧇āύ (listen()) āĻ•āϰāĻžāύ⧋ āĻšāϝāĻŧ, āφāϰ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϏ⧇āϟāĻŋāϤ⧇ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āφāχāĻĒāĻŋ āĻ“ āĻĒā§‹āĻ°ā§āϟ āĻĻāĻŋāϝāĻŧ⧇ connect() āĻ•āϰāϤ⧇ āĻšāϝāĻŧāĨ¤

🤔 Why do we need ports in TCP/IP communication?​

āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ āĻāĻ•āϏāĻžāĻĨ⧇ āĻ…āύ⧇āĻ•āϗ⧁āϞ⧋ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤ āφāĻĒāύāĻŋ āĻāĻ•āχ āϏāĻžāĻĨ⧇ āĻŦā§āϰāĻžāωāϜāĻžāϰ āĻĻāĻŋāϝāĻŧ⧇ āĻ“āϝāĻŧ⧇āĻŦ āϏāĻžāĻ°ā§āĻĢāĻŋāĻ‚ āĻ•āϰāϛ⧇āύ, āφāĻŦāĻžāϰ āĻ¸ā§āĻĒāϟāĻŋāĻĢāĻžāχāϤ⧇ āĻ—āĻžāύ āĻļ⧁āύāϛ⧇āύ, āφāĻŦāĻžāϰ āϗ⧇āĻŽ āϖ⧇āϞāϛ⧇āύāĨ¤ āϝāĻ–āύ āĻŦāĻžāχāϰ⧇ āĻĨ⧇āϕ⧇ āĻĄāĻžāϟāĻž āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ⧇ āφāϏ⧇, āϤāĻ–āύ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰāϕ⧇ āĻŦ⧁āĻāϤ⧇ āĻšāĻŦ⧇ āĻāχ āĻĄā§‡āϟāĻž āϕ⧋āύ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āĻāϏ⧇āϛ⧇āĨ¤ āĻĒā§‹āĻ°ā§āϟ āύāĻžāĻŽā§āĻŦāĻžāϰāϗ⧁āϞ⧋ āĻĻ⧇āϖ⧇āχ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ āϏāĻ āĻŋāĻ• āĻĄā§‡āϟāĻžāϕ⧇ āϏāĻ āĻŋāĻ• āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āĻ•āĻžāϛ⧇ āĻĒ⧌āρāϛ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āĻĒā§‹āĻ°ā§āϟ āύāĻž āĻĨāĻžāĻ•āϞ⧇ āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡ āĻŽāĻžāĻ˛ā§āϟāĻŋāϟāĻžāĻ¸ā§āĻ•āĻŋāĻ‚ āĻ•āϰāĻž āϏāĻŽāĻ¸ā§āϝāĻž āĻšāϤ⧋āĨ¤

âš–ī¸ What is the difference between a port and a socket?​

  • đŸšĒ Port (āĻĒā§‹āĻ°ā§āϟ): āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϞāϜāĻŋāĻ•ā§āϝāĻžāϞ āύāĻžāĻŽā§āĻŦāĻžāϰ, āϝāĻž āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ⧇āϰ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻŦāĻž āĻĒā§āϰāϏ⧇āϏāϕ⧇ āφāχāĻĄā§‡āĻ¨ā§āϟāĻŋāĻĢāĻžāχ āĻ•āϰ⧇āĨ¤
  • 🔌 Socket (āϏāϕ⧇āϟ): āϏāϕ⧇āϟ āĻšāĻšā§āϛ⧇ āĻĒ⧁āϰ⧋ āĻ•āĻžāύ⧇āĻ•āĻļāύ⧇āϰ āĻāĻ•āϟāĻž āĻ āĻŋāĻ•āĻžāύāĻž āĻāĻŦāĻ‚ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟāĨ¤ āĻāϟāĻŋ IP Address āĻāĻŦāĻ‚ Port Number āĻāϰ āĻŽāĻŋāĻļā§āϰāĻŖāĨ¤

đŸšĢ Can two different processes listen on the same port? Why or why not?​

āύāĻž, āϏāĻžāϧāĻžāϰāĻŖ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāϝāĻŧ āĻĻ⧁āϟāĻŋ āĻ­āĻŋāĻ¨ā§āύ āĻĒā§āϰāϏ⧇āϏ āĻŦāĻž āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻāĻ•āχ āφāχāĻĒāĻŋ āĻ…ā§āϝāĻžāĻĄā§āϰ⧇āϏ āĻāĻŦāĻ‚ āĻāĻ•āχ āĻĒā§‹āĻ°ā§āĻŸā§‡ āϞāĻŋāϏ⧇āύ (listen) āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻžāĨ¤

  • āĻ•āĻžāϰāĻŖ āĻŦāĻžāχāϰ⧇ āĻĨ⧇āϕ⧇ āϝāĻ–āύ āĻ“āχ āĻĒā§‹āĻ°ā§āĻŸā§‡ āĻĄāĻžāϟāĻž āφāϏāĻŦ⧇, āϤāĻ–āύ āĻ…āĻĒāĻžāϰ⧇āϟāĻŋāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ•āύāĻĢāĻŋāωāϜāĻĄ āĻšāϝāĻŧ⧇ āϝāĻžāĻŦ⧇ āϝ⧇ āĻĄā§‡āϟāĻžāϟāĻŋ āϕ⧋āύ āĻĒā§āϰāϏ⧇āϏāϕ⧇ āĻĻ⧇āĻŦ⧇āĨ¤
  • āϤāĻŦ⧇ āĻ•āĻŋāϛ⧁ āĻŦāĻŋāĻļ⧇āώ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ⧇ (āϝ⧇āĻŽāύ SO_REUSEPORT āĻĢā§āĻ˛ā§āϝāĻžāĻ— āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻŽāĻžāĻ˛ā§āϟāĻŋ-āĻĒā§āϰāϏ⧇āϏāϰ āφāĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āϚāĻžāϰ⧇ āϝ⧇āĻŽāύ Nginx āĻāϰ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻžāϰ āĻĒā§āϰāϏ⧇āϏāϗ⧁āϞ⧋) āĻāĻ•āχ āĻĒā§‹āĻ°ā§āĻŸā§‡ āϞāĻŋāϏ⧇āύ āĻ•āϰāĻžāύ⧋ āϏāĻŽā§āĻ­āĻŦ āĻŸā§āϰāĻžāĻĢāĻŋāĻ• āĻĄāĻŋāĻ¸ā§āĻŸā§āϰāĻŋāĻŦāĻŋāωāĻļāύ⧇āϰ āϜāĻ¨ā§āϝāĨ¤

🤝 40. What are the three-way handshake, packet loss, and routing tables?​

TCP āϤāĻžāϰ āĻ•āĻžāύ⧇āĻ•āĻļāύ, āĻĄāĻžāϟāĻž āĻŸā§āϰāĻžāĻ¨ā§āϏāĻĢāĻžāϰ āĻāĻŦāĻ‚ āĻĒāĻžāĻĨ āϏāĻŋāϞ⧇āĻ•āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āĻ•āĻŋāϛ⧁ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻŽā§‡āĻ•āĻžāύāĻŋāϜāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇:

  • 🤝 Three-Way Handshake: āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻāĻŦāĻ‚ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻĄā§‡āϟāĻž āφāĻĻāĻžāύ āĻĒā§āϰāĻĻāĻžāύ⧇āϰ āφāϗ⧇ āϤāĻžāϰāĻž āĻāϕ⧇ āĻ…āĻĒāϰ⧇āϰ āϏāĻžāĻĨ⧇ āĻĒāϰāĻŋāϚāĻŋāϤ āĻšāϤ⧇ āĻāĻŦāĻ‚ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻ āĻŋāĻ• āĻ•āϰāϤ⧇ āϝ⧇ āϤāĻŋāύāϟāĻŋ āĻŽā§‡āϏ⧇āϜ (SYN, SYN-ACK, ACK) āφāĻĻāĻžāύ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇, āϏ⧇āϟāĻŋāχ āĻĨā§āϰāĻŋ-āĻ“āϝāĻŧ⧇ āĻšā§āϝāĻžāĻ¨ā§āĻĄāĻļ⧇āĻ•āĨ¤ āĻāϟāĻŋ TCP-āϰ āϏāĻŋāĻ•āĻŋāωāϰ āĻ•āĻžāύ⧇āĻ•āĻļāύ āĻ¸ā§āϟāĻžāĻŦāϞāĻŋāĻļ āĻ•āϰ⧇āĨ¤
  • 📉 Packet Loss: āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡āϰ āϰāĻžāωāϟāĻžāϰāϗ⧁āϞ⧋ āϝāĻ–āύ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻŸā§āϰāĻžāĻĢāĻŋāϕ⧇āϰ āĻ•āĻžāϰāϪ⧇ āĻ“āĻ­āĻžāϰāϞ⧋āĻĄā§‡āĻĄ āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧ āϤāĻ–āύ āϤāĻžāϰāĻž āĻ•āĻŋāϛ⧁ āĻĒā§āϝāĻžāϕ⧇āϜ āĻŦāĻžāĻĻ āĻĻāĻŋāϝāĻŧ⧇ āĻŦāĻž āĻĄā§āϰāĻĒ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āĻāϟāĻŋāϕ⧇ āĻĒā§āϝāĻžāϕ⧇āϟ āϞāϏ āĻŦāϞ⧇, āϝāĻž TCP āĻ āĻŋāĻ•āĻŽāϤ⧋ āϰāĻŋāĻ•āĻ­āĻžāϰ āĻ•āϰ⧇ āύ⧇āϝāĻŧāĨ¤
  • 📋 Routing Table: āĻāϟāĻŋ āĻšāϞ⧋ āĻāĻ•āϟāĻŋ āĻŽā§āϝāĻžāĻĒ āĻŦāĻž āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ, āϝāĻž āĻĒā§āϰāϤāĻŋāϟāĻŋ āϰāĻžāωāϟāĻžāϰ⧇āϰ āϭ⧇āϤāϰ⧇ āϏ⧇āĻ­ āĻ•āϰāĻž āĻĨāĻžāϕ⧇āĨ¤ āϰāĻžāωāϟāĻžāϰ āĻĒā§āϝāĻžāϕ⧇āϟ āϰāĻŋāϏāĻŋāĻ­ āĻ•āϰāĻžāϰ āĻĒāϰ āĻāχ āĻŸā§‡āĻŦāĻŋāϞ āĻĻ⧇āϖ⧇ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύ⧇āϝāĻŧ āϝ⧇ āĻĒā§āϝāĻžāϕ⧇āϟāϟāĻŋ āϕ⧋āύ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒāĻĨ⧇ āĻŦāĻž āĻĒā§‹āĻ°ā§āĻŸā§‡ āĻĢāϰāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤

📉 How does TCP detect and handle packet loss?​

TCP āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒāĻžāĻ āĻžāύ⧋ āĻĒā§āϝāĻžāϕ⧇āĻŸā§‡ āĻāĻ•āϟāĻŋ āϏāĻŋāϕ⧋āϝāĻŧ⧇āĻ¨ā§āϏ āύāĻžāĻŽā§āĻŦāĻžāϰ (Sequence Number) āĻŦāϏāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧāĨ¤

  • āϝāĻ–āύ āϰāĻŋāϏāĻŋāĻ­āĻžāϰ āĻĄā§‡āϟāĻž āϰāĻŋāϏāĻŋāĻ­ āĻ•āϰ⧇, āϏ⧇ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻŋāϕ⧋āϝāĻŧ⧇āĻ¨ā§āϏ āύāĻžāĻŽā§āĻŦāĻžāϰ⧇āϰ āĻāĻ•āύāϞ⧇āϜāĻŽā§‡āĻ¨ā§āϟ (ACK) āĻĢ⧇āϰāϤ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤
  • āϝāĻĻāĻŋ āϏ⧇āĻ¨ā§āĻĄāĻžāϰ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻŽāϝāĻŧ⧇āϰ āĻŽāĻ§ā§āϝ⧇ (Retransmission Timeout) āϕ⧋āύ⧋ āĻĒā§āϝāĻžāϕ⧇āĻŸā§‡āϰ ACK āύāĻž āĻĒāĻžāϝāĻŧ, āĻ…āĻĨāĻŦāĻž āϝāĻĻāĻŋ āϏ⧇ āĻĒāϰ āĻĒāϰ āĻāĻ•āχ āύāĻžāĻŽā§āĻŦāĻžāϰ⧇āϰ āϤāĻŋāύāϟāĻž āĻĄā§āĻĒā§āϞāĻŋāϕ⧇āϟ ACK (Duplicate ACK) āϰāĻŋāϏāĻŋāĻ­ āĻ•āϰ⧇, āϤāĻ–āύ āϏ⧇ āĻŦ⧁āĻāϤ⧇ āĻĒāĻžāϰ⧇ āϝ⧇ āĻ“āχ āĻĒā§āϝāĻžāϕ⧇āϟāϟāĻž āĻĄā§āϰāĻĒ āĻšāϝāĻŧ⧇āϛ⧇ āĻŦāĻž āĻšāĻžāϰāĻŋāϝāĻŧ⧇ āϗ⧇āϛ⧇āĨ¤
  • āϤāĻ–āύ āϏ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āĻļ⧁āϧ⧁ āϏ⧇āχ āĻšāĻžāϰāĻžāύ⧋ āĻĒā§āϝāĻžāϕ⧇āϟāϟāĻŋāϕ⧇ āĻĒ⧁āύāϰāĻžāϝāĻŧ (Fast Retransmission) āĻĒāĻžāĻ āĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧāĨ¤

📋 What is a routing table and how is it built?​

Routing Table āĻšāϞ⧋ āĻĄā§‡āϟāĻž āĻĢāϰāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄāĻŋāĻ‚ āĻāϰ āĻĢāĻ°ā§āĻŽā§āϞāĻž āĻļāĻŋāϟ āĻŦāĻž āϰ⧁āϞāĻŦ⧁āĻ•āĨ¤ āĻāϤ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ—āĻ¨ā§āϤāĻŦā§āϝ⧇āϰ IP Network, Subnet Mask āĻāĻŦāĻ‚ āϞāϜāĻŋāĻ•ā§āϝāĻžāϞ āϗ⧇āϟāĻ“āϝāĻŧ⧇āϰ āĻ āĻŋāĻ•āĻžāύāĻž āĻĨāĻžāϕ⧇āĨ¤

  • āĻāϟāĻŋ āϤ⧈āϰāĻŋ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ (Static Routing): āϝ⧇āĻ–āĻžāύ⧇ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻāĻĄāĻŽāĻŋāύ āύāĻŋāĻœā§‡ āĻšāĻžāϤ⧇ āĻŦāϏ⧇ āĻŸā§‡āĻŦāĻŋāϞ āĻĄāĻžāϟāĻž āĻāĻ¨ā§āĻŸā§āϰāĻŋ āĻ•āϰ⧇ āĻĻ⧇āύāĨ¤
  • āĻ…āĻĨāĻŦāĻž āĻāϟāĻŋ āϤ⧈āϰāĻŋ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āĻ…āĻŸā§‹āĻŽā§‡āϟāĻŋāĻ•ā§āϝāĻžāϞāĻŋ (Dynamic Routing): āϝ⧇āĻ–āĻžāύ⧇ OSPF āĻŦāĻž BGP āĻāϰ āĻŽāϤ⧋ āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞāϗ⧁āϞ⧋ āϰāĻžāωāϟāĻžāϰāϕ⧇ āĻļ⧇āĻ–āĻžāϝāĻŧ āĻ“āϰ āφāĻļ⧇āĻĒāĻžāĻļ⧇āϰ āĻĄāĻŋāĻ­āĻžāχāϏāϗ⧁āϞ⧋āϰ āφāχāĻĒāĻŋ āĻāĻŦāĻ‚ āĻĒāĻžāĻĨ, āφāϰ āϰāĻžāωāϟāĻžāϰ āύāĻŋāĻœā§‡āχ āύāĻŋāĻœā§‡āϰ āĻŸā§‡āĻŦāĻŋāϞ āĻŦāĻŋāĻ˛ā§āĻĄ āĻāĻŦāĻ‚ āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧇āĨ¤

🧱 41. How do firewalls use TCP/IP to protect networks?​

Firewall (āĻĢāĻžāϝāĻŧāĻžāϰāĻ“āϝāĻŧāĻžāϞ) āĻšāϞ⧋ āĻāĻ•āϟāĻŋ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āϏāĻŋāĻ•āĻŋāωāϰāĻŋāϟāĻŋ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ, āϝāĻž incoming (Incoming) āĻāĻŦāĻ‚ outgoing (Outgoing) āĻŸā§āϰāĻžāĻĢāĻŋāĻ• āĻŽāύāĻŋāϟāϰ āĻāĻŦāĻ‚ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰ⧇āĨ¤

  • āĻĢāĻžāϝāĻŧāĻžāϰāĻ“āϝāĻŧāĻžāϞ TCP/IP āϞ⧇āϝāĻŧāĻžāϰ⧇āϰ āϤāĻĨā§āϝāϗ⧁āϞ⧋ (āϝ⧇āĻŽāύ: āϏ⧋āĻ°ā§āϏ āφāχāĻĒāĻŋ, āĻĄā§‡āĻ¸ā§āϟāĻŋāύ⧇āĻļāύ āφāχāĻĒāĻŋ, āϏ⧋āĻ°ā§āϏ āĻĒā§‹āĻ°ā§āϟ āĻāĻŦāĻ‚ āĻĄā§‡āĻ¸ā§āϟāĻŋāύ⧇āĻļāύ āĻĒā§‹āĻ°ā§āϟ āύāĻžāĻŽā§āĻŦāĻžāϰ) āĻāĻŦāĻ‚ āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞ āϟāĻžāχāĻĒ (TCP/UDP) āĻĒāĻĄāĻŧ⧇āĨ¤
  • āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ…ā§āϝāĻžāĻĄāĻŽāĻŋāύ āĻ•āĻŋāϛ⧁ āϰ⧁āϞāϏ āĻŦāĻž āĻĒāϞāĻŋāϏāĻŋ (Ruleset) āĻ āĻŋāĻ• āĻ•āϰ⧇ āĻĻ⧇āύ, āϝāĻžāϰ āĻ“āĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻĢāĻžāϝāĻŧāĻžāϰāĻ“āϝāĻŧāĻžāϞ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύ⧇āϝāĻŧ āϝ⧇ āĻĒā§āϝāĻžāϕ⧇āϜāϟāĻŋāϕ⧇ āĻĸ⧁āĻ•āϤ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāĻŦ⧇ (Allow) āύāĻžāĻ•āĻŋ āĻŦā§āϞāĻ• (Drop/Deny) āĻ•āϰ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāĻŦ⧇āĨ¤

🧠 What is the difference between a stateful and stateless firewall?​

  • 🧠 Stateless Firewall: āĻāχ āĻĢāĻžāϝāĻŧāĻžāϰāĻ“āϝāĻŧāĻžāϞ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒā§āϝāĻžāϕ⧇āϟāϕ⧇ āφāϞāĻžāĻĻāĻž āφāϞāĻžāĻĻāĻž āĻ­āĻžāĻŦ⧇ āĻŦāĻŋāϚāĻžāϰ āĻ•āϰ⧇āĨ¤ āĻāĻ•āϟāĻŋ āĻĒā§āϝāĻžāϕ⧇āϟ āφāϗ⧇ āϕ⧀ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāϝāĻŧ āĻ›āĻŋāϞ āϏ⧇āϟāĻžāϰ āϕ⧋āύ⧋ āĻšāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āĻŦāĻž āĻ¸ā§āĻŽā§ƒāϤāĻŋ āϏ⧇ āĻŽāύ⧇ āϰāĻžāϖ⧇ āύāĻžāĨ¤ āĻāϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āϰ⧁āϞāϏ āĻŦ⧇āϜāĻĄāĨ¤
  • 💾 Stateful Firewall: āĻāϟāĻŋ āĻĒā§āϝāĻžāϕ⧇āĻŸā§‡āϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻĒ⧁āϰ⧋ āĻ•āĻžāύ⧇āĻ•āĻļāύ⧇āϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻž (State) āĻŦāĻž āĻĒā§āϰāϏāĻ™ā§āĻ— āĻŽāύ⧇ āϰāĻžāϖ⧇āĨ¤ āϝ⧇āĻŽāύ: āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āϭ⧇āϤāϰ āĻĨ⧇āϕ⧇ āĻŦāĻžāχāϰ⧇āϰ āϕ⧋āύ⧋ āϏāĻžāχāĻŸā§‡ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻĒāĻžāĻ āĻžāύ, āϤāĻŦ⧇ āĻ¸ā§āĻŸā§‡āϟāĻĢ⧁āϞ āĻĢāĻžāϝāĻŧāĻžāϰāĻ“āϝāĻŧāĻžāϞ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇ āϝ⧇ āφāĻĒāύāĻŋ āĻāχ āĻ•āĻžāύ⧇āĻ•āĻļāύāϟāĻŋ āĻļ⧁āϰ⧁ āĻ•āϰ⧇āϛ⧇āύ, āϤāĻžāχ āϏ⧇ āĻ“āχ āϏāĻžāχāϟ āĻĨ⧇āϕ⧇ āφāϏāĻž āϰāĻŋāϟāĻžāĻ°ā§āύ āĻŦāĻž āϰ⧇āϏāĻĒāĻ¨ā§āϏ āĻĄā§‡āϟāĻžāϕ⧇ āĻĸ⧁āĻ•āϤ⧇ āĻĻ⧇āĻŦ⧇āĨ¤ āĻāϟāĻŋ āĻ…āύ⧇āĻ• āĻŦ⧇āĻļāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āϟ āĻāĻŦāĻ‚ āϏ⧁āϰāĻ•ā§āώāĻŋāϤāĨ¤

🌐 What is a Web Application Firewall (WAF) and how does it differ from a network firewall?​

  • 🧱 Network Firewall: āĻāϟāĻŋ āĻ•āĻžāϜ āĻ•āϰ⧇ OSI āĻŽāĻĄā§‡āϞ⧇āϰ ā§ŠāϝāĻŧ āĻāĻŦāĻ‚ ā§ĒāĻ°ā§āĻĨ āϞ⧇āϝāĻŧāĻžāϰ⧇ (Network āĻāĻŦāĻ‚ Transport)āĨ¤ āĻāϰ āĻ•āĻžāϜ āĻšāϞ⧋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āφāχāĻĒāĻŋ āĻŦāĻž āĻĒā§‹āĻ°ā§āϟ āĻŦā§āϞāĻ• āĻ•āϰāĻžāĨ¤ āĻāϟāĻŋ āĻĒā§āϝāĻžāϕ⧇āĻŸā§‡āϰ āϭ⧇āϤāϰ⧇ āĻŦāĻž āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āĻĄā§‡āϟāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āĻĸ⧁āĻ•āϤ⧇ āĻĒāĻžāϰ⧇ āύāĻžāĨ¤
  • đŸ›Ąī¸ WAF (Web Application Firewall): āĻāϟāĻŋ āĻ•āĻžāϜ āĻ•āϰ⧇ ā§­āĻŽ āϞ⧇āϝāĻŧāĻžāϰ⧇ (Application Layer)āĨ¤ āĻāϟāĻŋ āĻ¸ā§āĻĒ⧇āĻļāĻžāϞāĻ­āĻžāĻŦ⧇ āĻ“āϝāĻŧ⧇āĻŦ āĻ…ā§āϝāĻžāĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻžāĨ¤ āĻāϟāĻŋ HTTP āĻŸā§āϰāĻžāĻĢāĻŋāϕ⧇āϰ āĻ­āĻŋāϤāϰ⧇āϰ āĻ•āύāĻŸā§‡āĻ¨ā§āϟ āĻŦāĻž āĻĒ⧇āϞ⧋āĻĄ (āϝ⧇āĻŽāύ SQL āχāύāĻœā§‡āĻ•āĻļāύ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ, XSS āĻŸā§āϝāĻžāĻ—) āϰāĻŋāĻĄ āĻŦāĻž āĻ¸ā§āĻ•ā§āϝāĻžāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āϏāĻ¨ā§āĻĻ⧇āĻšāϜāύāĻ• āĻšā§āϝāĻžāĻ•āĻŋāĻ‚ āĻ…ā§āϝāĻžāĻŸā§‡āĻŽā§āĻĒāϟ āϧāϰāϤ⧇ āĻ“ āĻŦā§āϞāĻ• āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

🎭 42. What is Network Address Translation (NAT), and how does it work in TCP/IP networks?​

NAT (Network Address Translation) āĻšāϞ⧋ āϰāĻžāωāϟāĻžāϰ⧇āϰ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻĒā§āϰāϏ⧇āϏ, āϝāĻž āĻāĻ•āϟāĻŋ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŦāĻž āĻĒā§āϰāĻžāχāϭ⧇āϟ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇āϰ āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ āφāχāĻĒāĻŋ āĻ…ā§āϝāĻžāĻĄā§āϰ⧇āϏāϗ⧁āϞ⧋āϕ⧇ āĻāĻ•āϟāĻŋāĻŽāĻžāĻ¤ā§āϰ āĻĒāĻžāĻŦāϞāĻŋāĻ• āφāχāĻĒāĻŋāϤ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ (Translate) āĻ•āϰ⧇ āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āϝ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰ⧇āĨ¤

â†”ī¸ What is the difference between SNAT and DNAT?​

  • 📤 SNAT (Source NAT): āϭ⧇āϤāϰ⧇āϰ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• (āĻ˛ā§āϝāĻžāύ) āĻĨ⧇āϕ⧇ āĻŦāĻžāχāϰ⧇āϰ āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡ āϝāĻžāĻ“āϝāĻŧāĻžāϰ āϏāĻŽāϝāĻŧ āϏ⧋āĻ°ā§āϏ āĻĒā§āϰāĻžāχāϭ⧇āϟ āφāχāĻĒāĻŋ āĻ…ā§āϝāĻžāĻĄā§āϰ⧇āϏāϟāĻŋ āĻšā§‡āĻžā§āϜ āĻšāϝāĻŧ⧇ āϰāĻžāωāϟāĻžāϰ⧇āϰ āĻĒāĻžāĻŦāϞāĻŋāĻ• āφāχāĻĒāĻŋāϤ⧇ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰāĻŋāϤ āĻšāϝāĻŧāĨ¤ āφāĻŽāϰāĻž āϏāĻžāϧāĻžāϰāĻŖāϤ āĻŦāĻžāϏāĻž āĻŦāĻž āĻ…āĻĢāĻŋāϏ⧇ āĻāϟāĻžāχ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋāĨ¤
  • đŸ“Ĩ DNAT (Destination NAT) āĻŦāĻž Port Forwarding: āϝāĻ–āύ āχāĻ¨ā§āϟāĻžāϰāύ⧇āϟ āĻĨ⧇āϕ⧇ āϕ⧋āύ⧋ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āϞ⧋āĻ•āĻžāϞ āĻ˛ā§āϝāĻžāύ⧇āϰ āϭ⧇āϤāϰ⧇āϰ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āφāϏāĻžāϰ āĻĻāϰāĻ•āĻžāϰ āĻšāϝāĻŧ, āϤāĻ–āύ āϰāĻžāωāϟāĻžāϰ āĻŦāĻžāχāϰ⧇āϰ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āĻŸā§‡āϰ āĻĒāĻžāĻŦāϞāĻŋāĻ• āĻĄā§‡āĻ¸ā§āϟāĻŋāύ⧇āĻļāύ āφāχāĻĒāĻŋ-āϕ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ āϭ⧇āϤāϰ⧇āϰ āĻĒā§āϰāĻžāχāϭ⧇āϟ āφāχāĻĒāĻŋ āĻ“ āĻĒā§‹āĻ°ā§āĻŸā§‡ āĻĢāϰāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āĻāϟāĻŋ āĻ“āϝāĻŧ⧇āĻŦ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ“ āϗ⧇āĻŽ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āϞāĻžāϗ⧇āĨ¤

🔗 How does NAT affect peer-to-peer connections and how is it worked around?​

āϏāĻŽāĻ¸ā§āϝāĻž: P2P (Peer-to-Peer) āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇ āĻĻ⧁āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ āϏāϰāĻžāϏāϰāĻŋ āϝ⧁āĻ•ā§āϤ āĻšāϤ⧇ āϚāĻžāϝāĻŧāĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ āωāĻ­āϝāĻŧ āĻĄāĻŋāĻ­āĻžāχāϏāχ āϝāĻĻāĻŋ āύāĻŋāϜ āύāĻŋāϜ āĻŦāĻžāĻĄāĻŧāĻŋāϰ NAT āϰāĻžāωāϟāĻžāϰ⧇āϰ āĻĒ⧇āĻ›āύ⧇ āĻĨāĻžāϕ⧇ (āĻĒā§āϰāĻžāχāϭ⧇āϟ āφāχāĻĒāĻŋāϤ⧇), āϤāĻŦ⧇ āϕ⧇āωāχ āϏāϰāĻžāϏāϰāĻŋ āĻ•āĻžāωāϕ⧇ āĻāĻ•ā§āϏ⧇āϏ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻž āĻ•āĻžāϰāĻŖ āχāĻ¨ā§āϟāĻžāϰāύ⧇āϟ āĻĒā§āϰāĻžāχāϭ⧇āϟ āφāχāĻĒāĻŋ āϚāĻŋāύāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻž āĻāĻŦāĻ‚ āĻ¨ā§āϝāĻžāĻŸā§‡āϰ āĻĢāĻžāϝāĻŧāĻžāϰāĻ“āϝāĻŧāĻžāϞ āφāύāύ⧋āύ āĻŸā§āϰāĻžāĻĢāĻŋāĻ• āĻŦā§āϞāĻ• āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āϏāĻŽāĻžāϧāĻžāύ: āĻāχ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ⧇ NAT Traversal āĻŸā§‡āĻ•āύāĻŋāĻ• (āϝ⧇āĻŽāύ STUN, TURN, āĻāĻŦāĻ‚ ICE) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ, āϝāĻž āϰāĻžāωāϟāĻžāϰ⧇āϰ āĻĒā§‹āĻ°ā§āϟ āĻ“āĻĒ⧇āύ āĻ•āϰ⧇ āĻ…āĻĨāĻŦāĻž āĻŽāĻžāĻā§‡ āĻāĻ•āϟāĻŋ āϰāĻŋāϞ⧇ (TURN) āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻŦāϏāĻŋāϝāĻŧ⧇ āĻĻ⧁āχ āĻĄāĻŋāĻ­āĻžāχāϏ⧇āϰ āĻŽāĻžāĻā§‡ āĻĄāĻŋāϰ⧇āĻ•ā§āϟ āĻŦāĻž āϏ⧇āĻŽāĻŋ-āĻĄāĻŋāϰ⧇āĻ•ā§āϟ āĻ•āĻžāύ⧇āĻ•āĻļāύ āϘāϟāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧ (āϝāĻž WebRTC, VoIP āĻ āĻĒā§āϰāϚ⧁āϰ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧ)āĨ¤

🏠 How does NAT allow multiple devices in a home to share a single public IP?​

āĻāχ āĻŦāĻŋāĻļ⧇āώ āĻ¨ā§āϝāĻžāĻŸā§‡āϰ āύāĻžāĻŽ āĻšāϞ⧋ PAT (Port Address Translation) āĻŦāĻž NAT OverloadāĨ¤

  • āϝāĻ–āύ āĻŦāĻžāϏāĻžāϰ āĻŽā§‹āĻŦāĻžāχāϞ, āĻ˛ā§āϝāĻžāĻĒāϟāĻĒ, āϟāĻŋāĻ­āĻŋ āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻĒāĻžāĻ āĻžāϝāĻŧ, āϤāĻ–āύ āϰāĻžāωāϟāĻžāϰ āϏāĻŦ āĻĄāĻŋāĻ­āĻžāχāϏ⧇āϰ āĻĒā§āϰāĻžāχāϭ⧇āϟ āφāχāĻĒāĻŋ āĻŽā§āϛ⧇ āϏ⧇āĻ–āĻžāύ⧇ āύāĻŋāĻœā§‡āϰ āφāχāĻĒāĻŋ āĻŦāϏāĻžāϝāĻŧāĨ¤
  • āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ⧇āϰ āϜāĻ¨ā§āϝ āϰāĻžāωāϟāĻžāϰ āĻāĻ•āϟāĻŋ āĻ•āϰ⧇ āφāϞāĻžāĻĻāĻž āϞāϜāĻŋāĻ•ā§āϝāĻžāϞ āĻĒā§‹āĻ°ā§āϟ āύāĻŽā§āĻŦāϰ (āϝ⧇āĻŽāύ IP:5001, IP:5002) āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ (NAT Table) āϞāĻŋāϖ⧇ āϰāĻžāϖ⧇āĨ¤
  • āϝāĻ–āύ āχāĻ¨ā§āϟāĻžāϰāύ⧇āϟ āĻĨ⧇āϕ⧇ āϰ⧇āϏāĻĒāĻ¨ā§āϏ āĻĢāĻŋāϰ⧇ āφāϏ⧇, āϤāĻ–āύ āϰāĻžāωāϟāĻžāϰ āĻ“āχ āĻĒā§‹āĻ°ā§āϟ āύāĻŽā§āĻŦāϰ āĻĻ⧇āϖ⧇ āĻŦ⧁āĻāϤ⧇ āĻĒāĻžāϰ⧇ āϝ⧇ āĻāχ āĻĄā§‡āϟāĻžāϟāĻŋ āĻ˛ā§āϝāĻžāĻĒāϟāĻĒ⧇āϰ āϜāĻ¨ā§āϝ āύāĻžāĻ•āĻŋ āĻŽā§‹āĻŦāĻžāχāϞ⧇āϰ āϜāĻ¨ā§āϝ, āφāϰ āϏ⧇ āϤāĻ–āύ āϏ⧇āϟāĻŋ āĻ āĻŋāĻ• āĻĄāĻŋāĻ­āĻžāχāϏāϕ⧇ āĻĢāϰāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧāĨ¤

âąī¸ 43. How do backend developers handle TCP connection timeouts in API servers?​

āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ (āϝ⧇āĻŽāύ Node.js āĻŦāĻž Python) āĻ…āύ⧇āĻ• āĻŦ⧇āĻļāĻŋ āĻ•āύāĻ•āĻžāϰ⧇āĻ¨ā§āϟ āĻŦāĻž āϏāĻŽāĻžāĻ¨ā§āϤāϰāĻžāϞ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻāϞ⧇ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϝ⧇āύ āĻšā§āϝāĻžāĻ‚ āύāĻž āĻšāϝāĻŧ, āϤāĻžāχ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰāϰāĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϞ⧇āϝāĻŧāĻžāϰ⧇ (Nginx, Application) āϟāĻžāχāĻŽāφāωāϟ (Timeouts) āϏ⧇āϟ āĻ•āϰ⧇ āϰāĻžāϖ⧇āύāĨ¤ āϕ⧋āύ⧋ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āϝāĻĻāĻŋ āĻļ⧁āϧ⧁ āĻ•āĻžāύ⧇āĻ•ā§āϟ āĻ•āϰ⧇ āĻŦāϏ⧇ āĻĨāĻžāϕ⧇ āĻŦāĻž āϖ⧁āĻŦ āϧ⧀āϰāĻ—āϤāĻŋāϤ⧇ āĻĄā§‡āϟāĻž āϏ⧇āĻ¨ā§āĻĄ āĻ•āϰ⧇, āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻ“āχ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϟāĻžāχāĻŽāφāωāϟ āϏāĻŽāϝāĻŧ⧇āϰ āĻĒāϰ āĻ•āĻžāύ⧇āĻ•āĻļāύāϟāĻŋ āĻĄā§āϰāĻĒ āĻ•āϰ⧇ āĻĻāĻŋāϝāĻŧ⧇ āĻŽā§‡āĻŽāϰāĻŋ āϰāĻŋāϞāĻŋāϜ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧāĨ¤

âŗ What is the difference between a connection timeout and a read timeout?​

  • 🔌 Connection Timeout: āĻāϟāĻŋ āĻšāϞ⧋ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻāĻŦāĻ‚ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ• TCP āĻ•āĻžāύ⧇āĻ•āĻļāύ āĻŦāĻž āĻĨā§āϰāĻŋ-āĻ“āϝāĻŧ⧇ āĻšā§āϝāĻžāĻ¨ā§āĻĄāĻļ⧇āĻ• āϏāĻŽā§āĻĒāĻ¨ā§āύ āĻšāϤ⧇ āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āĻ•āϤāϟ⧁āϕ⧁ āϏāĻŽāϝāĻŧ āύ⧇āĻŦ⧇ āϤāĻžāϰ āĻāĻ•āϟāĻŋ āϏ⧀āĻŽāĻžāĨ¤ āĻāϟāĻŋ āĻĢāĻŋāϜāĻŋāĻ•ā§āϝāĻžāϞ āĻŦāĻž āϰāĻžāωāϟāĻŋāĻ‚ āχāĻ¸ā§āϝ⧁āϰ āĻ•āĻžāϰāϪ⧇ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
  • 📖 Read Timeout: āĻ•āĻžāύ⧇āĻ•āĻļāύ āĻ¸ā§āϟāĻžāĻŦāϞāĻŋāĻļ āĻšāĻ“āϝāĻŧāĻžāϰ āĻĒāϰ, āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻ•āϤāĻ•ā§āώāĻŖ āϏāĻŽāϝāĻŧ āύāĻŋāϝāĻŧ⧇ āĻĄā§‡āϟāĻž āĻĒāĻžāĻ āĻžāĻŦ⧇ āĻŦāĻž āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻ•āϤāĻ•ā§āώāĻŖ āĻ…āĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰ⧇āĻ“ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡āϰ āĻ•āĻžāĻ› āĻĨ⧇āϕ⧇ āϕ⧋āύ⧋ āĻĄāĻžāϟāĻž āĻŦāĻž āϰ⧇āϏāĻĒāĻ¨ā§āϏ āĻĒ⧇āϞ āύāĻž, āϤāĻžāϰ āϞāĻŋāĻŽāĻŋāϟāĨ¤ āĻ…āĻ°ā§āĻĨāĻžā§Ž āĻĄā§‡āϟāĻž āφāĻĻāĻžāύ-āĻĒā§āϰāĻĻāĻžāύ⧇ āĻ•āϤāĻ•ā§āώāĻŖ āĻŦāĻŋāϞāĻŽā§āĻŦ āĻšāϞ⧇ āĻ•āĻžāύ⧇āĻ•āĻļāύāϟāĻŋ āĻŦāĻžāϤāĻŋāϞ āĻšāĻŦ⧇, āϏ⧇āϟāĻŋāχ āϰāĻŋāĻĄ āϟāĻžāχāĻŽāφāωāϟāĨ¤

âš™ī¸ How do you configure idle connection timeouts in Nginx or a Node.js server?​

  • Nginx āĻ: keepalive_timeout (āĻĄāĻŋāĻĢāĻ˛ā§āϟ 75s) āĻĻāĻŋāϝāĻŧ⧇ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ āĻāĻ•āϟāĻŋ āφāχāĻĄāϞ āĻ•āĻžāύ⧇āĻ•āĻļāύ āĻ•āϤāĻ•ā§āώāĻŖ āĻ–ā§‹āϞāĻž āĻĨāĻžāĻ•āĻŦ⧇āĨ¤ client_body_timeout āĻāĻŦāĻ‚ send_timeout āĻĻāĻŋāϝāĻŧ⧇ āϰāĻŋāĻĄ āĻ“ āϰāĻžāχāϟ āϟāĻžāχāĻŽāφāωāϟ āϏ⧇āϟ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤
  • Node.js (Express) āĻ: āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸā§‡ āϟāĻžāχāĻŽāφāωāϟ āĻ­ā§āϝāĻžāϞ⧁ āϏ⧇āϟ āĻ•āϰ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧ:
const server = app.listen(3000);
server.keepAliveTimeout = 60000; // 60 seconds
server.headersTimeout = 65000; // should be > keepAliveTimeout

đŸšĻ 44. What is the impact of TCP congestion control on backend performance?​

TCP Congestion Control āĻšāϞ⧋ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇ āĻŸā§āϰāĻžāĻĢāĻŋāĻ• āĻœā§āϝāĻžāĻŽ āĻ•āĻŽāĻžāύ⧋āϰ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāϞāĻ—āϰāĻŋāĻĻāĻŽāĨ¤ āϝāĻĻāĻŋ āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡āϰ āϕ⧋āύ⧋ āϰāĻžāωāϟāĻžāϰ⧇ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻ­āĻŋāĻĄāĻŧ āĻĨāĻžāϕ⧇, āϤāĻ–āύ āĻĒā§āϝāĻžāϕ⧇āϟ āϞāϏ āĻļ⧁āϰ⧁ āĻšāϝāĻŧāĨ¤ āĻāϟāĻŋ āĻĻ⧇āϖ⧇ āϏ⧇āĻ¨ā§āĻĄāĻžāϰ āĻŦāĻž āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇āϰ TCP āϞ⧇āϝāĻŧāĻžāϰ āϤāĻžāϰ āĻĄā§‡āϟāĻž āĻĒāĻžāĻ āĻžāύ⧋āϰ āĻ¸ā§āĻĒāĻŋāĻĄ āύāĻŋāĻœā§‡ āĻĨ⧇āϕ⧇ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻ›āĻžāĻĄāĻŧāĻžāχ āĻ¸ā§āϞ⧋ āĻŦāĻž āĻ•āĻŽāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧāĨ¤

  • āĻĒā§āϰāĻ­āĻžāĻŦ: āĻāϰ āĻĢāϞ⧇ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻĨ⧇āϕ⧇ āχāωāϜāĻžāϰ⧇āϰ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āϰ⧇āϏāĻĒāĻ¨ā§āϏ āϝ⧇āϤ⧇ āĻŦ⧇āĻļāĻŋ āϏāĻŽāϝāĻŧ āϞāĻžāϗ⧇ āĻŦāĻž āĻŦāĻžāĻĢāĻžāϰāĻŋāĻ‚ āĻšāϝāĻŧāĨ¤ āϤāĻžāχ āφāϧ⧁āύāĻŋāĻ• āϏāĻžāĻ°ā§āĻ­āĻžāϰāϗ⧁āϞ⧋ āϏāĻ āĻŋāĻ• āĻ•āύāĻœā§‡āĻļāύ āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞ āĻ…ā§āϝāĻžāϞāĻ—āϰāĻŋāĻĻāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ āĻŦ⧁āĻ¸ā§āϟ āĻ•āϰ⧇āĨ¤

🧠 What are the main TCP congestion control algorithms (CUBIC, BBR)?​

  • 🧊 CUBIC: āĻāϟāĻŋ āϞāĻŋāύāĻžāĻ•ā§āϏ (Linux) āĻ“ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āĻ“āĻāϏ⧇āϰ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ…ā§āϝāĻžāϞāĻ—āϰāĻŋāĻĻāĻŽāĨ¤ āĻāϟāĻŋ āĻŽā§‚āϞāϤ āĻĒā§āϝāĻžāϕ⧇āϟ āϞāϏ (Packet Loss) āĻāϰ āĻ“āĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤ āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āĻĒā§āϝāĻžāϕ⧇āϟāĻ“ āϞāϏ āĻšāϝāĻŧ, āĻāϟāĻŋ āĻŽāύ⧇ āĻ•āϰ⧇ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇ āĻœā§āϝāĻžāĻŽ āφāϰ āϤāĻžāχ āĻĒāĻžāĻ āĻžāύ⧋āϰ āĻ—āϤāĻŋ āĻ…āĻ°ā§āϧ⧇āĻ• āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧāĨ¤
  • 🚀 BBR (Bottleneck Bandwidth and Round-trip propagation time): āĻāϟāĻŋ āϗ⧁āĻ—āϞ⧇āϰ (Google) āϤ⧈āϰāĻŋ āφāϧ⧁āύāĻŋāĻ• āĻ…ā§āϝāĻžāϞāĻ—āϰāĻŋāĻĻāĻŽāĨ¤ āĻāϟāĻŋ āĻĒā§āϝāĻžāϕ⧇āϟ āϞāϏ āύāĻž āĻĻ⧇āϖ⧇ āĻŦāϰāĻ‚ āϏāϰāĻžāϏāϰāĻŋ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇āϰ āϞāĻžāχāĻ­ āĻŦā§āϝāĻžāĻ¨ā§āĻĄāωāχāĻĨ āĻāĻŦāĻ‚ āĻ˛ā§āϝāĻžāĻŸā§‡āĻ¨ā§āϏāĻŋ āĻŽā§‡āĻĒ⧇ āĻ¸ā§āĻĒāĻŋāĻĄ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

🚀 How does TCP BBR improve performance for high-latency connections?​

āĻšāĻžāχ-āĻ˛ā§āϝāĻžāĻŸā§‡āĻ¨ā§āϏāĻŋ āĻ•āĻžāύ⧇āĻ•āĻļāύ⧇ (āϝ⧇āĻŽāύ āĻ¸ā§āϝāĻžāĻŸā§‡āϞāĻžāχāϟ āχāĻ¨ā§āϟāĻžāϰāύ⧇āϟ āĻŦāĻž āĻ…āύ⧇āĻ• āĻĻā§‚āϰ⧇āϰ āϏāĻžāĻ°ā§āĻ­āĻžāϰ) āĻ…āύ⧇āĻ• āϏāĻŽāϝāĻŧ āϏāĻžāϧāĻžāϰāĻŖ āĻĒā§āϝāĻžāϕ⧇āϟ āϞāϏ āĻšāϤ⧇āχ āĻĒāĻžāϰ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϤāĻžāϰ āĻŽāĻžāύ⧇ āĻāχ āύāĻž āϝ⧇ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻ“āĻ­āĻžāϰāϞ⧋āĻĄ āĻšāϝāĻŧ⧇ āϗ⧇āϛ⧇āĨ¤

  • CUBIC āϏāĻžāĻŽāĻžāĻ¨ā§āϝ āĻĒā§āϝāĻžāϕ⧇āϟ āϞāϏ⧇āχ āĻ¸ā§āĻĒāĻŋāĻĄ āĻ…āύ⧇āĻ• āĻ•āĻŽāĻŋāϝāĻŧ⧇ āĻĻāĻŋāϤ, āϝāĻžāϰ āĻ•āĻžāϰāϪ⧇ āĻšāĻžāχ-āĻ˛ā§āϝāĻžāĻŸā§‡āĻ¨ā§āϏāĻŋ āχāωāϜāĻžāϰāϰāĻž āϖ⧁āĻŦ āĻŦāĻžāĻœā§‡ āĻ…āĻ­āĻŋāĻœā§āĻžāϤāĻž āĻĒ⧇āϤāĨ¤
  • āĻ…āĻ¨ā§āϝāĻĻāĻŋāϕ⧇ BBR āĻĒā§āϝāĻžāϕ⧇āϟ āϞāϏ āχāĻ—āύ⧋āϰ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇āϰ āĻāĻ•āϚ⧁āϝāĻŧāĻžāϞ āĻ•ā§āϝāĻžāĻĒāĻžāϏāĻŋāϟāĻŋ āĻ•ā§āϝāĻžāϞāϕ⧁āϞ⧇āϟ āĻ•āϰ⧇āĨ¤ āĻĢāϞ⧇ āĻāϟāĻŋ āĻ¸ā§āĻĒāĻŋāĻĄ āύāĻž āĻ•āĻŽāĻŋāϝāĻŧ⧇ āĻ•ā§āϰāĻŽāĻžāĻ—āϤ āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āĻŦā§āϝāĻžāĻ¨ā§āĻĄāωāχāĻĨ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĄāĻžāϟāĻž āĻĒ⧁āĻļ āĻ•āϰāϤ⧇ āĻĨāĻžāϕ⧇āĨ¤ āĻāϤ⧇ āĻšāĻžāχ-āĻ˛ā§āϝāĻžāĻŸā§‡āĻ¨ā§āϏāĻŋ āĻŦāĻž āĻšāĻžāχ-āϞāϏ āĻĨāĻžāĻ•āĻž āϏāĻ¤ā§āĻ¤ā§āĻŦ⧇āĻ“ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ āĻāĻŦāĻ‚ āĻ¸ā§āĻĒāĻŋāĻĄ āωāĻ˛ā§āϞ⧇āĻ–āϝ⧋āĻ—ā§āϝ āĻšāĻžāϰ⧇ āĻŦ⧃āĻĻā§āϧāĻŋ āĻĒāĻžāϝāĻŧāĨ¤